如果我点击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();
}
答案 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" />