2014-12-03 2 views
0

Моя форма MVC не будет отправлена, если у меня нет значения в поле TextBoxFor. Я использую TextBoxFor, потому что мне нужно значение поля, хранящегося в атрибуте модели. Мне нужно одно из двух следующих решений: один из них удовлетворяет мои потребности. Мне нужно либо при отправке моей формы, чтобы иметь возможность сохранять значение обычного TextBox для атрибута модели, либо разрешить отправку, когда мой TextBoxFor пуст.Отправить MVC для пустого поля Razor TextBoxFor

В настоящее время мой код выглядит следующим образом:

@using (Ajax.BeginForm("PartialResults", "Students", new { LoadItemsOnly = true }, new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "find-results" })) 
{ 
<div class="inline-ct"> 
    <table> 
     <tr> 
      <td><span class="lbl">Name: </span></td> 
      @Html.TextBoxFor(m => m.Filter, new { autofocus = "autofocus", id = "name" }) 
     </tr> 
     <tr> 
      <td><span class="lbl">@Html.DisplayNameFor(m => m.LocationID): </span></td> 
      <td>@Html.DropDownListFor(m => m.LocationID, new SelectList(Model.Locations, "Key", "Value"))</td> 
     </tr> 
     <tr> 
      <td><span class="lbl">@Html.DisplayNameFor(m => m.ADGuid): </span></td> 
      <td>@Html.DropDownListFor(m => m.ADGuid, new SelectList(Model.Teachers, "Key", "Value"))</td> 
     </tr> 
     <tr> 
      <td><span class="lbl">@Html.DisplayNameFor(m => m.ClassCode): </span></td> 
      <td>@Html.DropDownListFor(m => m.ClassCode, new SelectList(Model.SchoolClasses, "Key", "Value"))</td> 
     </tr> 
     <tr> 
      <td><button type="submit" class="btn-primary" id="btn-find">Find</button></td> 
      <td></td> 
     </tr> 
    </table> 
</div> 

<div id="student-find-results" class="row"> 
</div> 
} 

Как уже упоминалось это работает отлично, когда есть значение по TextBoxFor, однако форма не подается, если пустой. Любая помощь будет принята с благодарностью.

ПРИМЕЧАНИЕ: Я попытался добавить onclick даже к кнопке, но затем он не отправляется на контроллер.

+3

Пожалуйста, обратите внимание на модели и посмотреть, если его отмеченный ' [Требуется] 'аннотация данных. и почему вы меняете «id» фильтра – Amila

+0

wow ... мое лицо немного красное. Это исправило это, спасибо. Если вы поместите это как ответ, я буду отмечать его так. Спасибо за помощь! – mgrenier

ответ

1

Прежде всего, проверьте, если вы не добавив [обязательно] атрибут на поле в вашей ViewModel объект, который вы передаете к виду:

[Required(ErrorMessage = "")] 
public string MyAttribute { get; set; } 

Во-вторых, убедитесь, что ваше поле текста окна является нулевым, используя значение? ключевое слово в вашей модели ViewModel

public int? MyAttribute { get; set; } 

В-третьих, проверьте, есть ли проверка JQuery над полями на стороне клиента. Обратите внимание, что если вы хотите отключить проверку для всех полей, вы можете изменить ваш контроллер не испытать для ModelState, сняв флажок ModelState:

if(ModelState.IsValid) 
{ 
// TODO: 
} 
+1

Спасибо за предоставление полного ответа, чтобы помочь другим, у кого проблема, может немного отличаться от моих. – mgrenier

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