1

MVC4 C#Ajax .BeginForm возвращает пустой взгляд в IE9

Я использую Ajax.BeginForm в течение моего приложения, и это работает прекрасно. Когда я создал и протестировал представление ChkNum, он работал отлично. Внезапно он прекратил работать, и я не могу понять, почему. Он по-прежнему работает в других представлениях, но в представлении ChkNum возвращенная страница пуста (я получаю верхний и нижний колонтитулы, но не тело), ​​когда тест ModelState.IsValid в результате действия post не работает, и представление возвращается. Собственные сценарии загружаются с сайта и работают во всех других представлениях.

ChkNum Вид:

@model ModelVM 
@{ ViewBag.Title = "Title"; } 
<script type="text/javascript"> 
    var onSuccess = function (result) { 
     if (result.url) { 
      window.location.href = result.url; 
     } 
    } 
</script> 

<div id="CkNmFrm"> 
    @Html.ValidationSummary(true) <h2>Page Title</h2> 
    <span class="h5-sty">Field1: @Model.Field1 Field2: @Model.Field2</span><br /> 
    @using (Ajax.BeginForm("ChkNum", new AjaxOptions() {OnSuccess = "onSuccess", UpdateTargetId = "CkNmFrm", HttpMethod = "Post"})) 
    { 
     @Html.AntiForgeryToken() 
     <br /> 
     <span class="h4-sty">Field3: </span> 
     <span class="ebwid">@Html.EditorFor(m => m.Field3) </span> 
     @Html.ValidationMessageFor(m => m.Field3)<br /><br /> 
     <span><input type="submit" value="Submit" /></span> 
     <br /><br /> 
    } 
</div> 

ChkNum Действие:

public ActionResult ChkNum(int id) 
{ 
    // code to build vM 
    return View(vM); 
} 

[HttpPost, ValidateAntiForgeryToken] 
public ActionResult ChkNum(ModelVM vM) 
{ 
    if (ModelState.IsValid) 
    { 
     //code 
    } 

    ModelState.AddModelError(string.Empty, "Fix Error"); 
    return PartialView("ChkNum", vM); 
} 

Я прошел через несколько раз коды и сравнил его с рабочими действиями и взглядами и не могу найти что-нибудь неладное. Я положил точку останова в возвратном PartialView, и он правильно прошел через CkNmFrm.

Я не могу думать ни о чем другом, что я изменил в приложении, которое могло бы вызвать эту проблему.

На моем конце ума на этом. Любая помощь очень ценится.

UPDATE: Я использую IE 9. Я просто попытался его в Chrome и проблема ушла. Итак, теперь вопрос заключается в том, почему он работает в нескольких представлениях, кроме ChkNum, и проблема особенно важна для IE?

+0

Вы возвращаете 'return PartialView (« ChkNum », vM);' из вашего ActionResult, но у вас есть частичный вид с именем ChkNum ?. Я спросил об этом, потому что вы не упомянули о частичном представлении с этим именем. Я мог видеть ChkNum как представление, но не как parital view –

+0

Не уверен, что вы получаете. ChkNum - это представление, которое я загружаю как PartialView. Опять же, этот точный код работает в нескольких представлениях и только терпит неудачу в этом конкретном представлении и только в IE. – Joe

ответ

0

Я, наконец, нашел проблему. В конце представления у меня был большой блок кода с комментариями (@ * * @). Правый smack в середине был

</div> 

конец тега, который не был прокомментирован. Когда я удалю, проблема будет устранена. Вздох, часы тратятся. Я начал удалять весь смущающий POST, но решил оставить его в надежде, что другие могут узнать из моей глупости.

Смежные вопросы