在提交时,动作不会转到MVC3中的控制器

时间:2013-11-29 05:51:30

标签: c# asp.net .net asp.net-mvc-3

如果我点击cshtml文件中的提交按钮,则操作不会转到控制器。我已经为此创建了GET方法。但只发布post方法。得到的工作正常..

模型

public class ABCModel

{
    public int ABCQueryId { get; set; }
    public int UserId { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "Query cannot be more than 100 characters long.")]
    [Display(Name = "Query Title*")]
    public string QueryTitle { get; set; }

    [Display(Name = "Specific Notes *")]
    public string SpecificNotes { get; set; }
    public DateTime QueryDate;      
    public string Status { get; set; }
    public string SupportDocument { get; set; }       

}

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 id="intake_sheet_1" style="visibility: visible">
    @Html.HiddenFor(model => model.ABC.ABCQueryId)


 @{
   String errorMessage = "";
    if (Session["errorMessage"] != null)
    {
     errorMessage = Session["errorMessage"].ToString();
     }
     if (!String.IsNullOrEmpty(errorMessage))
     {
      <span class="pendingtxt" style="color:red;font-size:13px;">@errorMessage</span>
      }
   }

  <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="primary button float_right" value="Submit" type="submit" name="button" />

            </p>
           </div>
       </div>
   </div>

控制器

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ABC(ABCViewModel model, string button)
    {

            QURManager manager = new QURManager();
            if (Session["userDetails"] != null)
            {
                manager = new QURManager((RegModel)Session["userDetails"]);
            }
            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;
            AssignSession.UpdateRegisterUserSession();

            return View();           
    }      

1 个答案:

答案 0 :(得分:0)

根据您的示例检查控制器名称是QueriesController

确定您在页面中包含以下脚本:

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

并在你的web.config中有你的礼物:

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