部分视图中的模型验证无效

时间:2015-03-26 05:11:38

标签: model-view-controller

大家好我是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; }
    }`

所以我的部分视图以弹出方式打开...

但问题是没有模型验证在客户端执行..

页面进入服务器端,页面

中不再存在弹出窗口

1 个答案:

答案 0 :(得分:0)

  1. 您必须为此处给出的begin form方法使用正确的重载 https://msdn.microsoft.com/en-us/library/dd460344(v=vs.118).aspx
  2. 应为beginform("create","status ",FormMethod.Post)

    1. 我建议您使用HTML.ajaxform或使用自定义jQuery ajax发布数据,以便弹出模型仍然存在。

    2. 作为一个良好的开发实践,不要从控制器抛出任何异常,处理异常,记录它并向最终用户添加友好消息。或者将控制器基类更改为派生的基本控制器,它负责处理未处理的异常。

    3. HTH