Jquery 如何在mvc3中将viewmodel对象从视图传递到控制器,然后从控制器传递到视图
在一个测验应用程序中,我有一个“问题”域对象,它有许多字段,包括问题描述和选择数。我可以加载并查看第一个问题,如下所示,但在表单提交时,我想发送此viewmodel并加载下一个问题对象,而无需发回。我看到了一些使用jquery的ajax调用示例,但我找不到任何可以通过控制器和视图之间的ajax调用传递整个对象的示例Jquery 如何在mvc3中将viewmodel对象从视图传递到控制器,然后从控制器传递到视图,jquery,ajax,asp.net-mvc,asp.net-mvc-3,Jquery,Ajax,Asp.net Mvc,Asp.net Mvc 3,在一个测验应用程序中,我有一个“问题”域对象,它有许多字段,包括问题描述和选择数。我可以加载并查看第一个问题,如下所示,但在表单提交时,我想发送此viewmodel并加载下一个问题对象,而无需发回。我看到了一些使用jquery的ajax调用示例,但我找不到任何可以通过控制器和视图之间的ajax调用传递整个对象的示例 @model BusinessModel.Question @{ ViewBag.Title = "Survey"; Layout = "~/Views/Shared/_Layou
@model BusinessModel.Question
@{
ViewBag.Title = "Survey";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("Survey", "Tools", new { QuestionId = Model.QuestionId }, FormMethod.Post, new { onsubmit = "return getCheckedRadioButton();" }))
{
<div id="QuestionContent">
<h2>Welcome To Quiz</h2>
<fieldset>
<p>
Question
@Model.QuestionId of @ViewBag.QuestionCount:
</p>
<p>
@Model.Description.
</p>
<ul style="list-style:none;">
@foreach (var item in Model.Answers)
{
<li> @Html.RadioButton("ChoiceList", item.score) @item.AnswerDesc</li>
}
</ul>
<input type="submit" value="Next" id="submitButton" />
</fieldset>
</div>
}
有什么想法吗?谢谢,您可以创建一个JavaScript对象,该对象在问题类中具有相同的字段,并在提交时将其作为JSON对象传递给控制器
var question = {};
// fill the viewmodel object.
$.ajax(
{
url: 'Tools/Survey/',
data: JSON.stringify({question : question }),
contentType: 'application/json',
dataType: 'json',
type: 'POST',
success: function (data) {
// data contains next question and you can create the view accordingly
},
error: function () {
// error
}
});
在控制器中,您可以访问问题并将下一个问题作为JSON返回,如下所示
[HttpPost]
public ActionResult Survey(Question question )
{
// get the next question
return Json(new { question = nextQuestion }, JsonRequestBehavior.AllowGet);
}
更多信息请参考下面的帖子
它演示了如何将复杂的javascript对象传递给MVC控制器
谢谢 为什么不使用Ajax.BeginForm呢?请给出一个与我使用Ajax.BeginForm的要求类似的示例