Jquery 如何在智能向导中将模型发布到控制器?
我只想在用户在smart wizard中从步骤2转到步骤3时回发一篇$.ajax文章。所以我制定了以下代码。我使用了var model=JSON。stringify@Model; 将模型转换为字符串并使用ajax请求传递 Ajax代码 但上述操作不会向控制器发回呼叫。我已经通过删除JSON进行了检查。stringify@Model并将其替换为文本。现在ajax请求到达控制器时没有任何问题 下面是我的代码 模型文件 到 现在请求到达控制器,但我收到的模型是空的。JSON。stringify@Model; 不会做你认为会做的事。stringify需要一个Javascript对象@Model将有Razor输出Model.ToString;的内容;,它将不是Javascript对象 您需要将模型序列化为Javascript,这可以使用JavaScriptSerializer实现:Jquery 如何在智能向导中将模型发布到控制器?,jquery,ajax,json,asp.net-mvc-4,model,Jquery,Ajax,Json,Asp.net Mvc 4,Model,我只想在用户在smart wizard中从步骤2转到步骤3时回发一篇$.ajax文章。所以我制定了以下代码。我使用了var model=JSON。stringify@Model; 将模型转换为字符串并使用ajax请求传递 Ajax代码 但上述操作不会向控制器发回呼叫。我已经通过删除JSON进行了检查。stringify@Model并将其替换为文本。现在ajax请求到达控制器时没有任何问题 下面是我的代码 模型文件 到 现在请求到达控制器,但我收到的模型是空的。JSON。stringify@Mod
var model = @{new JavaScriptSerializer().Serialize(Model)};
var s = 10;
$.ajax({
type: 'POST',
url: '@Url.Action("GetSampleFeed")',
data: model
});
您可以在System.Web.Extensions DLL中找到
此外,由于您正在反序列化模型,因此不需要将其转换为JSON或从JSON转换为JSON。MVC和jQuery将为您处理此问题,因此在控制器端,您可以执行以下操作:
[HttpPost]
public ActionResult GetSampleFeed(OndemandFeedModel model)
{
return Content(string.Format("<row>{0}</row>", model.RowName));
}
嗨,Blade,谢谢你的回复。我已经按照您的建议进行了尝试,现在请求到达控制器,但我收到了一个空模型。@Umamaheswaran使用Chrome控制台/Firefox Firebug来检查发送到服务器的确切数据。您可能需要更改一些参数,以确保MVC将其识别为JSON。看看这个答案:
<script type="text/javascript">
$(document).ready(function () {
$('#wizard').smartWizard({
onShowStep: showAStepCallback,
onFinish: onFinishCallback
});
function showAStepCallback(obj, context) {
if (context.fromStep == 2 && context.toStep == 3) {
var model = JSON.stringify(@Model);
var s = 10;
$.ajax({
type: 'POST',
url: '@Url.Action("GetSampleFeed")',
data: "inStringModel=" + model
});
}
// return false to stay on step and true to continue navigation
}
// setting the active tab
$('#wizard').smartWizard();
$('.date').datepicker({ dateFormat: "dd/mm/yy" });
function onFinishCallback() {
$('#wizard').smartWizard('showMessage', 'Finish Clicked');
//alert('Finish Clicked');
}
.....
});
</script>
[HttpPost]
public ActionResult GetSampleFeed(string inStringModel)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
var inObjectModel = serializer.Deserialize(inStringModel, typeof(OndemandFeedModel));
return Content("<row></row>");
}
var model = JSON.stringify(@Model);
var model = @{new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model);}
var model = @{new JavaScriptSerializer().Serialize(Model)};
var s = 10;
$.ajax({
type: 'POST',
url: '@Url.Action("GetSampleFeed")',
data: model
});
[HttpPost]
public ActionResult GetSampleFeed(OndemandFeedModel model)
{
return Content(string.Format("<row>{0}</row>", model.RowName));
}