Действие для ajax.beginform, выбрасывающего 404 из приложения MVC, а не из Fiddler

У меня есть следующее, и я получаю 404 при отправке, но от скрипача я получаю ошибку 500 о том, что у меня нет антифургонного токена. Есть мысли, что может быть не так?

Код ShareController.cs

// creates the form
[HttpPost]
public ActionResult ShareVideoFormEmail(string vguid)
{
    var shareModel = GetShareVideoFormEmailModel(vguid);

    return PartialView("ShareVideoFormEmail", shareModel);
}
// handler function
[HttpPost]
[ValidateHoneyPot]
[ValidateAntiForgeryToken]
public ActionResult ProcessShareVideoFormEmail(ShareVideoEmailModel model)
{
    //do stuff
    return PartialView("Result");
}

ShareVideoFormEmail.cshtml

@model Gcc.GctWebsite.Areas.Forms.Models.Share.ShareVideoEmailModel

@using (Ajax.BeginForm("ProcessShareVideoFormEmail","share",null ,new AjaxOptions
{
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "shareVideoFormWithMyFriends",
    OnBegin = "onBeginShareEmail", @* show ajaxspinner *@
    OnComplete = "onCompleteShareEmail", @* hide ajaxspinner *@
    OnSuccess = "onSuccessShareEmail" @* hide ajaxspinner *@
}, new { id = "shareVideoEmailModelForm" }))
{
<div class="modal-header">
        <div class="modal-header-title">Share the video &quot;@ViewBag.VideoTitle&quot; with my friends</div>
</div>
<div class="modal-body">
    <div id ="shareVideoFormWithMyFriends" class="share-form-email">
        @Html.AntiForgeryToken()
        @Html.HoneyPot()
        @Html.HiddenFor(x => x.UpdateTargetId)
        @Html.HiddenFor(x => x.OgMetaTitle)
        @Html.HiddenFor(x => x.OgMetaDescription)
        @Html.HiddenFor(x => x.OgMetaDefaultImage)
        @Html.HiddenFor(x => x.OgMetaImage)
        @Html.HiddenFor(x => x.Brand)
        @Html.HiddenFor(x => x.VGuid)
        @Html.HiddenFor(x => x.TripCode)
        @Html.HiddenFor(x => x.EmailSubject)
<!-- big section of input fields for model properties -->
<div class="form-field">
    <span class="req-lbl">* = Required</span>
</div>
<div class="form-field form-submit">
    <input class="btn btn-main-theme btn-narrow btn-submit-form" value="Send Email" type="submit">
    <input type="reset" class="btn btn-grey btn-reset cancel-share-Email" value="Cancel">
</div>
<script>
$(document).ready(function (e) {
    $('.required-input').after("<span class=\"rqdfield\">*</span>");
    loadJqueryValidationManually("#shareVideoEmailModelForm");
});
</script>

1 ответ

Оказывается, что в моей модели в некоторых данных были некоторые html нет-нет. Мне пришлось htmlencode пару свойств, прежде чем отображать представление, затем он работал нормально при обратной передаче. Я обнаружил это, изменив входной параметр метода действия на object и удалив проверку honeypot и xsfr. Затем я получил хорошую ошибку 500, объясняющую, что у меня были небезопасные данные.

Другие вопросы по тегам