我使用Facebox作为我的对话框。我在这些Facebox中有一个创建表单。当通过ajax $.post()
提交创建表单时,该操作将返回一个带有成功消息的部分视图,以替换facebox中的视图。我遇到的问题是Firebug是报告一个500服务器错误当Ajax调用完成后说:MVC Jquery Ajax调用返回声明它通过了错误模型的视图
传递到字典的模型项的类型为“Models.ViewModels.SystemMessage”,但这本字典需要一个'Models.CouponCampaign'的型号。
下面是成功消息的局部视图:
@model Redeemupon.Models.ViewModels.SystemMessage
<div class="successMessage" title="Success">
<img src="/Content/Images/Positive_48x48.png" alt=":-)"/>
@Html.Raw(Model.Message)
</div>
而且该继承人的传球这个局部视图的片段。
var viewModel = new SystemMessage()
{
Message = message
};
return PartialView(viewModel);
最后,这是载入facebox Ajax调用
$("#couponCampaignForm").submit(function() {
var queryString = $(this).serialize();
var action = "/CouponCampaign/Add?" + queryString;
$.post(action, function (data) {
//Load the resulting partial view into a facebox
$.facebox(data);
//Refresh the table
var action = "/CouponCampaign/CouponCampaignTable";
$.get(action, function (data) {
$("#ajaxTable").html(data);
});
});
return false;
});
原来的视图使用Models.CouponCampaign
是有可能,第二个观点是试图继承模式?它应该被新视图所替代,并带有自己的视图模型。
继承人从我globals.asax路由规则:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"RegisterStaff", // Route name
"Account/RegisterStaff/{tid}/{email}" // URL with parameters
);
routes.MapRoute(
"ForgotPassword", // Route name
"Account/ForgotPassword/{email}" // URL with parameters
);
}
您必须向我们展示路由规则。 –
@Gallen:显示您在此处执行的操作的“正确”方式是将解决方案作为答案添加到问题中,然后接受该答案。 (如果您可以接受自己的答案,则会有延迟,因此您必须在几天后回到此问题以勾选对号。) –