Model view controller 模型验证在局部视图中不起作用

Model view controller 模型验证在局部视图中不起作用,model-view-controller,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

大家好,我是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>
模型类是

`

所以我的部分视图被打开为弹出窗口

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

页面转到服务器端,页面中不再存在弹出窗口

您必须为这里给出的beginform方法使用正确的重载 它应该是beginformcreate、status、FormMethod.Post

我建议您使用HTML.ajaxform或使用自定义jQuery ajax发布数据,这样弹出式模型仍然可以使用

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

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; }
    }`