Данные на стороне клиента не работают с частичными представлениями, содержащими ajax.beginform внутри моего asp.net mvc - PullRequest
0 голосов
/ 05 марта 2012

У меня есть следующее частичное представление, которое будет возвращено после нажатия на ссылку ajax.action: -

@model System.Models.Answer 
@{ 
    ViewBag.Title = "Create"; 
} 
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
 <div id = "partialWrapper">
 @using (Ajax.BeginForm("Create", "Answer", new AjaxOptions
{
    HttpMethod = "Post",
    InsertionMode = InsertionMode.InsertAfter,
    UpdateTargetId = "incrementanswer",
    OnSuccess = "removePartial"
}))

 {
     <div id = "returnedquestion">
     @Html.ValidationSummary(true)

    <fieldset> 
        <legend>Answer here</legend> 
        <div class="editor-label"> 
            @Html.LabelFor(model => model.Description) 
        </div> 
        <div class="editor-field"> 
            @Html.EditorFor(model => model.Description) 
            @Html.ValidationMessageFor(model => model.Description) 
        </div> 
        <div class="editor-label"> 
            @Html.LabelFor(model => model.IsRight) 
        </div> 
        <div class="editor-field"> 
             @Html.DropDownList("IsRight", String.Empty) 
            @Html.ValidationMessageFor(model => model.IsRight) 
        </div>  
    </fieldset> 
     <input type= "hidden" name = "questionid" value = @ViewBag.questionid>
     <input type= "hidden" name = "assessmentid" value = @ViewBag.assessmentid>
     <input type="submit" value="Add answer" />
 </div>
 }
 </div>

проблема в том, что если я нажму на кнопку отправки, оставляя необходимые поляпусто, тогда на стороне клиента не будет отображаться проверка того, что поля IsRight и описание являются обязательными, вместо этого будет возвращено целое представление (содержащее макет), так в чем может быть проблема?

здесьэто метод действия, который вызывается из представления partila: -

[HttpPost] 
        public ActionResult Create(int questionid, Answer a) 
        { 
            if (ModelState.IsValid) 
            { 
        repository.AddAnswer(a); 
             repository.Save(); 
             return PartialView("_details",a); 
            } 
            return View(a); 

и ссылки ajax.action, которая будет возвращать частичное представление: -

<div id ="link">
@Ajax.ActionLink("Add New Answer", "Create", "Answer",
        new { questionid = Model.QuestionID },
          new AjaxOptions
          {

              HttpMethod = "Get",
              UpdateTargetId = "link",
              InsertionMode = InsertionMode.InsertAfter,
              LoadingElementId = "progress"


                        })
                        </div>

Ответы [ 3 ]

1 голос
/ 22 апреля 2013

Вам нужно перепривязать ненавязчивый JavaScript в успешной части запроса ajax.Как показано ниже:

$.validator.unobtrusive.parse($(“div#divWizard”));

Пожалуйста, просмотрите следующую ссылку на мой блог для дальнейшей ссылки.

0 голосов
/ 04 апреля 2012

Этот ответ должен быть тем, что вы ищете: Ненавязчивая проверка не работает с Ajax.BeginForm

0 голосов
/ 05 марта 2012

Вы включили ненавязчивую проверку?

 <appSettings>
  <add key="ClientValidationEnabled" value="true"/> 
  <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
 </appSettings>

Правильно ли вы связали эти файлы скриптов?

  <script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
  <script src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
  <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"><script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...