Я использую Facebox для своих диалоговых окон.И у меня есть форма создания внутри одного из этих Facebox-ов.Когда форма создания отправляется через ajax $.post()
, действие возвращает частичное представление с сообщением об успехе, чтобы заменить представление в лицевой панели.Проблема, с которой я сталкиваюсь, заключается в том, что firebug сообщает об ошибке сервера 500, когда завершается вызов 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);
И, наконец,вызов 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;
});
Исходное представление, загруженное в facebox, использует 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
);
}