Я использую Ajax для вызова Action
и пытаюсь отобразить возвращенное сообщение от Controller
до View
. Однако, хотя сообщение возвращается с TempData
, оно не отображается в представлении (на самом деле я отображал его в @Html.BeginForm()
, но в этот раз я использую <form>
и, возможно, это связано с этим). С другой стороны, я попытался использовать jquery.cookie
, как описано в эта страница, но не может отобразить сообщение. Не могли бы вы дать мне образец для TempData
и jquery.cookie
, показав необходимые строки на Controller
и View
? Заранее спасибо.
Просмотр:
<form id="frmCreate" action="Create" method="post" enctype="multipart/form-data" >
@if (TempData["message"] != null)
{
<div class="text-danger">@TempData["message"].ToString()</div>
}
//... removed for brevity
</form>
Контроллер:
public ActionResult Create([Bind(Exclude = null)] PersonViewModel person)
{
//Some stuff (removed for brevity)
TempData["message"] = "Record has been added...";
return PartialView("Create", person);
}
=============================== Обновление ============ ====================
Просмотр:
@model PersonViewModel
<form id="frmCreate" action="Create" method="post" enctype="multipart/form-data" >
@Html.AntiForgeryToken()
<div class="container">
@Html.ValidationSummary(true)
<div><b>Message:@ViewBag.Message</b></div>
@Html.LabelFor(m => m.ProjectID)
@(Html.Kendo().DropDownList()
.Name("ProjectID")
//... removed for brevity
)
<br />
@*Render Partialview according to Dropdownlists selectedIndex*@
<!-- Place where you will insert your partial -->
<div id="partialPlaceHolder" style="display:none;"></div>
</div>
<div class="modal-footer">
@(Html.Kendo().Button().Name("btnCancel"))
@(Html.Kendo().Button().Name("btnSubmit"))
.HtmlAttributes(new { type = "submit"})
</div>
</form>
<script type="text/javascript">
//OnLoad method & functions::::::::::
$(function () {
var selectedProjectId = $('#ProjectID').val(); /* Get the selected value of dropdownlist */
var json = JSON.stringify(@Model);
$.ajax({
type: "POST",
url: '@Url.Action("RenderPartialView", "Person")' + selectedProjectId,
contentType: "application/json; charset=utf-8",
data: json,
dataType: "json",
success: function (data) {
// get the result and do some magic with it
var message = data.Message;
$("#resultMessage").html(message);
}
});
});
//For keeping model values we use <form> instead of Html.BeginForm()
$('form').submit(function (event) {
event.preventDefault();
$.post('Person/Create', $(this).serialize()).done(function () {
}).fail(function () {
});
});
//Render Partialview according to Dropdownlist's selectedIndex
$('#ProjectID').change(function () {
var selectedProjectId = $(this).val();
$.get('/Person/RenderPartialView/' + selectedProjectId, function (data) {
$('#partialPlaceHolder').html(data);
});
});
</script>
Ajax
? Вам нужно показать сценарий. Но в любом случаеTempData
здесь не подходит (для передачи данных между запросами). ИспользованиеViewBag
было бы более подходящим. - person   schedule 18.06.2015Create()
, который вы показали. Ближайший из них —$.post('Issue/_Create', ....
, но он все равно ничего не делает. - person   schedule 18.06.2015$.post('Person/Create', $(this).serialize()).done(function ()
строка. - person Jack   schedule 18.06.2015$.post('Person/Create', $(this).serialize()
..` может обратиться к методу и вернуть какой-то html, но вы ничего с ним не сделаете. Но поскольку метод просто возвращает точно такое же представление (с сообщением), было бы лучше просто вернуть сообщение как json и обновить DOM. - person   schedule 18.06.2015Create()
, в элементе сid="ResultMessage"
? - и, пожалуйста, начните свое сообщение, как я сделал с этим, чтобы я получил уведомление :) - person   schedule 18.06.2015@Html.BeginForm()
в своих проектах до и после использованияAjax
, есть не толькоTempData
проблема, но иFile Upload
проблема, с которой я столкнулся. Поэтому, если лучше использовать@Html.BeginForm()
, не тратьте свое время на решение этой проблемы. Вместо этого взгляните на Почему PartialView не может перезагружаться с помощью Ajax в МВК ››› - person Jack   schedule 18.06.2015@Html.BeginForm
, если бы решил эту проблему. Единственное, что мне нужно, чтобы сохранить значения модели после отправки формы и вернуться обратно в представление. Было бы гораздо лучше решить этот вопрос. Не могли бы вы помочь с этой проблемой? Заранее спасибо. - person Jack   schedule 18.06.2015