2013-11-12 5 views
0

Кнопка отправки не работает на странице FORM. Я прочитал много решений по одному и тому же вопросу, но не смог исправить проблему. Может кто-нибудь, пожалуйста, указать на ошибку или предложить изменить ... ??MVC 3 form submit кнопка не работает

abc.cshtml

 @using (Ajax.BeginForm("ABC", "Queries", null, new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "content", LoadingElementId = "mask" }, new { enctype = "multipart/form- data", id = "intake_form", **@class** = "inline-form clear_both" })) 
    { 


    <div class="form_row"> 
     <div class="form_col1"> 
      <label class="QueryPageHeadings"> 
       Title*</label> 
     </div> 
     <div class="form_col2" style="z-index: 24; position: relative;" id="queryTitle_div"> 
    @Html.TextBoxFor(m => m.ABC.QueryTitle, new { @class = "text QueryFormTextBox" }) 
      <br /> 
      <div style="float: left"> 
       @Html.ValidationMessageFor(m => m.ABC.QueryTitle) 
      </div> 
     </div> 

    </div> 
    <div class="form_row"> 
     <div class="form_col1"> 
      <label class="QueryPageHeadings"> 
       Specific Notes</label> 
     </div> 
     <div class="form_col2" style="z-index: 21; position: relative;" id="specific_note_div"> 
      @Html.TextAreaFor(m => m.ABC.SpecificNotes, new { @class = "text QueryFormTextBox", style = "resize:none;height:160px;" }) 
      <br /> 
      <div style="float: left">@Html.ValidationMessageFor(m => m.ABC.SpecificNotes)</div> 

     </div> 
    </div> 
    <div class="form_row"> 
     <div class="form_col1"> 
      <label class="QueryPageHeadings"> 
       Supporting Document 
      </label> 
     </div> 
     <div class="form_col2"> 
      <div style="width:100%;float:left;"> 
      @Html.TextBoxFor(m => m.ABC.SupportDocument, new { @Id = "lblFileName", @readonly = "readonly" }) 
      </div> 
      <div style="width:100%;float:left;"> 
      <button id='btnUploadPopup' type="button" style="float:left;" onclick="javascript:OpenFileUpload();"> 
       Upload Files</button> 
       </div> 

     </div> 

    </div> 
    <div class="form_row form_footer">       
     <p class="indent"> 
       <input class="secondary button float_right" value="Submit" type="submit" name="button" />         
     </p> 
    </div> 
    } 

Controller.cs

[HttpPost] 
    public ActionResult ABC(ABCViewModel model, string button) 
    { 

      String errorMessage = ""; 
      if (String.IsNullOrEmpty(errorMessage)) 
      { 
       errorMessage = errorMessage + " Fields can not be empty."; 
      } 
      if (!String.IsNullOrEmpty(errorMessage)) 
      { 
       Session["errorMessage"] = errorMessage; 
       IABC data = new ABCViewModel(); 

       data.ABC.QueryTitle = model.ABC.QueryTitle; 
       data.ABC.SpecificNotes = model.ABC.SpecificNotes; 
       data.ABC.SupportDocument = model.ABC.SupportDocument; 

       TempData["isEdit"] = false; 
       return View("ABC", data); 
      } 
      else 
      { 
       Session["errorMessage"] = ""; 
       Session.Remove("errorMessage"); 
      } 


      Session["fileName"] = null; 
      return View(); 

    } 
+0

попробуйте установить метод на 'public ActionResult ABC (модель ABCViewModel)' – christiandev

+0

Покажите нам, как вы привязываете свою модель. Я подозреваю, что «ABCViewModel» является лишь частью реальной модели. –

ответ

0

пытаются украсить метод действия с атрибутом HttpPost

[HttpPost] 
public ActionResult ABC(ABCViewModel model, string button) 
{ 
    //your code 
} 

и изменить тип кнопки to 'submit'

<button type="submit">....</button> 
+0

Когда я нажал кнопку Submit Button, он не будет действовать в контроллере ... – CodeXerox

+1

it wont..u нужно создать два метода действий. один без атрибута и возврат к представлению. Затем создайте еще один ActionResult с атрибутом [HttpPost]. попробуй. –

+0

Я создал два метода действий: Get (без атрибутов), а второй - Post (с атрибутами). Вышеупомянутый метод - POST. Get работает нормально, но пост - нет. Когда я нажимаю кнопку отправки, тогда он должен вызывать метод «Почта», но его нет. Какие-либо предложения? – CodeXerox

0

Возможно, вам не хватает необходимых скриптов java, поскольку вы делаете сообщение AJAX. Добавьте в файл _Layout.chtml следующее.

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

Кроме того, необходимо, чтобы украсить свой метод контроллера с [HttpPost] атрибутом.

PS: Если вам не нужна асинхронная постановка, используйте только Html.BeginForm вместо Ajax.BeginForm.

+0

Уже сделано .. Но все равно не работает. – CodeXerox

+0

Зачем вам нужен параметр 'button' в вашем методе действий? Удалите его и попробуйте. –

+0

Уже пытался удалить параметр кнопки. Но все еще не работает. – CodeXerox

0

Я скопировал ваш код «AS-IS» и работает для меня. Почти :) (я изменил '**@class**' на '@class' из-за ошибки компилятора.

Попробуйте повторить его в пустом проекте. Может быть, вы что-то изменили?

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