大家好我是MVC的新手。所以请帮帮我
我的问题是..我正在使用以下部分视图
@model IELTS_TEST.Models.StatusMaster @{
Layout = null; } <script src="~/Scripts/jquery-1.7.1.min.js"></script> <script
src="~/Scripts/jquery.validate.min.js"></script> <script
src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm("Create", "Status", "POST")) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Create New Status</legend>
<div class="editor-label">
@Html.LabelFor(model => model.STATUSDESC)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.STATUSDESC)
@Html.ValidationMessageFor(model => model.STATUSDESC)
</div>
<p>
<button type="submit" id="btnSave" name="Command" value="Save" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">
<span class="ui-button-text">Save</span></button>
</p>
</fieldset> }
<div>
@Html.ActionLink("Close", "StatusMaster") </div>
我的控制器看起来像
public ActionResult CreateStatus()
{
try
{
if (Request.IsAjaxRequest())
{
ViewBag.IsUpdate = false;
return View("_Create");
}
else
return View();
}
catch (Exception ex)
{
throw ex;
}
}
[HttpPost]
public ActionResult Create(IELTS_TEST.Models.StatusMaster objStatusMaster, String Command)
{
try
{
if (!ModelState.IsValid)
{
return PartialView("_Create", objStatusMaster);
}
else
{
if (IELTS_TEST.Models.StatusMaster.SaveStatus(objStatusMaster))
{
TempData["Msg"] = "Status added succeessfully";
ModelState.Clear();
return RedirectToAction("StatusMaster", "Status");
}
}
return PartialView("_Create", objStatusMaster);
}
catch (Exception ex)
{
throw ex;
}
}
,模型类是......
`
public class StatusMaster
{
public int statusid { get; set; }
[Required(ErrorMessage = "Please Provide Status Description!")]
[StringLength(50, ErrorMessage = "Status Description cannot be more than 50 characters long!")]
[Display(Name = "Status Description")]
public string statusdesc { get; set; }
public int makerid { get; set; }
public DateTime makerdate { get; set; }
public int modiid{ get; set; }
public DateTime modefieddate{ get; set; }
}`
所以我的部分视图以弹出方式打开...
但问题是没有模型验证在客户端执行..
页面进入服务器端,页面
中不再存在弹出窗口答案 0 :(得分:0)
应为beginform("create","status ",FormMethod.Post)
我建议您使用HTML.ajaxform或使用自定义jQuery ajax发布数据,以便弹出模型仍然存在。
作为一个良好的开发实践,不要从控制器抛出任何异常,处理异常,记录它并向最终用户添加友好消息。或者将控制器基类更改为派生的基本控制器,它负责处理未处理的异常。
HTH