Как заставить JQuery возвращать View?
Раньше у меня была форма для непосредственного вызова Action, но теперь я хочу использовать JQuery для выполнения каких-либо действий перед вызовом Action. У меня проблема в том, что раньше, когда я вызывал return View() из контроллера, он перезагружал часть страницы с сообщением, которое я поместил в Viewbag.Message. Как мне сделать это с JQuery?
$("#button").click(function () {
DoStuff();
});
function DoStuff()
{
$.ajax("Home/DoStuff"), function() {
};
}
$
[HttpPost]
public ActionResult DoStuff()
{
string value = Request.Form["value"];
Viewbag.Message = TempData["message"];
CustomView view = new CustomView();
return View(view);
}
1 ответ
Решение
Рассмотрим что-то вроде этого (не проверено):
<html>
...
<body>
...
@Html.RenderAction("DoStuff", new { value: "" });
...
</body>
Частичное представление DoStuff.cshtml:
<div class="doStuffContent">
<script type="text/javascript">
$("#button").click(function () {
DoStuff();
});
function DoStuff()
{
$.ajax(
{
url: @Url.Action("DoStuff"),
data: {value: "testData"},
success: function(result)
{
$("doStuffContent").replaceWith(result);
}});
}
</script>
<a id="button">click me</a>
@ViewBag.message
</div>
Действие:
[HttpGet]
public ActionResult DoStuff()
{
Viewbag.Message = "";
return View();
}
[HttpPost]
public ActionResult DoStuff(string value)
{
Viewbag.Message = "Received " + value + "!";
return View();
}