首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC-5服务器端验证不起作用

ASP.NET MVC-5服务器端验证不起作用
EN

Stack Overflow用户
提问于 2015-04-13 12:51:16
回答 3查看 1.8K关注 0票数 0

我有ASP.NET MVC应用程序,并且无法对部分页面进行服务器端和客户端验证。在我的应用程序开始时,有正确验证的登录页面。因此,如果我按submit时表单中没有值,则应用程序不会显示任何错误消息。

模型类

代码语言:javascript
复制
 public class CreateFunctionNavigation_SP_Map
{
    public CreateFunctionNavigation_SP_Map()
    {
    }

    //Function Table

    [StringLength(250)]
    [Required(ErrorMessage = "Required Function Title")]
    [Display(Name = "Function Title")]
    public string FunctionName { get; set; }

    [Required(ErrorMessage = "Required Function Hierarchy; i.e Where Function Exists In Hierarchy Tree \n Top-Level Start From 1 ")]
    [Display(Name = "Function Hierarchy Level")]
    public int FunctionHierarchy_Level { get; set; }

    //Controller Table

    [StringLength(250)]
    [Required(ErrorMessage = "Required Controller Title")]
    [Display(Name = "Controller Title")]
    public string ControllerName { get; set; }

    //Action Table

    [StringLength(250)]
    [Required(ErrorMessage = "Required Action Title")]
    [Display(Name = "Action Title")]
    public string ActionName { get; set; }

    // Hierarchy Table

    [Required(ErrorMessage = "Required Function Parent - Child Relation ID \n Put 0 In Case Given Function doesn't Have Any Parent Function ")]
    [Display(Name = "Function Parent's FunctionID")]
    public int Function_ParentsFunctionID { get; set; }     
}

控制器方法

代码语言:javascript
复制
#region CreateNewFunctionNavigation
    [HttpGet]
    public ActionResult CreateNewFunctionNavigation()
    {

        return PartialView("CreateNewNavigation_Partial");
    }
    #endregion

    [HttpPost]
    public ActionResult CreateNewFunctionNavigation(CreateFunctionNavigation_SP_Map obj )
    {            
        try
        {
            if(ModelState.IsValid)
            {
                _FN_Services_a2.CreateFunctionNavigation(obj);
            }            
        }
        catch (DataException ex)
        {
            ModelState.AddModelError("", "Unable To Create New Function Navigation" + ex);
        }

        return RedirectToAction("SystemCoreHome");
    } //end

视图

代码语言:javascript
复制
@model App.DAL.Model.CreateFunctionNavigation_SP_Map
 <div class="_Form_Block">

        @using (Html.BeginForm("CreateNewFunctionNavigation", "SystemCore", FormMethod.Post, new { id = "NewFunctionNavigationForm" }))
        {
            @Html.AntiForgeryToken()

            @Html.ValidationSummary(true)

            <div class="form-group">
                @Html.LabelFor(@model => @model.FunctionName, new { @class = "control-label col-md-2" })
                <div class="form-group">
                    @Html.EditorFor(@model => @model.FunctionName)
                    @Html.ValidationMessageFor(@model => @model.FunctionName)
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(@model => @model.FunctionHierarchy_Level, new { @class = "control-label col-md-2" })
                <div class="form-group">
                    @Html.EditorFor(@model => @model.FunctionHierarchy_Level)
                    @Html.ValidationMessageFor(@model => @model.FunctionHierarchy_Level)
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(@model => @model.ControllerName, new { @class = "control-label col-md-2" })
                <div class="form-group">
                    @Html.EditorFor(@model => @model.ControllerName)
                    @Html.ValidationMessageFor(@model => @model.ControllerName)
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(@model => @model.ActionName, new { @class = "control-label col-md-2" })
                <div class="form-group">
                    @Html.EditorFor(@model => @model.ActionName)
                    @Html.ValidationMessageFor(@model => @model.ActionName)
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(@model => @model.Function_ParentsFunctionID, new { @class = "control-label col-md-2" })
                <div class="form-group">
                    @Html.EditorFor(@model => @model.Function_ParentsFunctionID)
                    @Html.ValidationMessageFor(@model => @model.Function_ParentsFunctionID)
                </div>
            </div>

            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default _formButton" />
                    <input type="button" value="Cancel" class="btn btn-default _formButton" onclick="CancelPage();" />
                </div>
            </div>
        }
    </div> <!--End _Form_Block-->

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-13 12:56:39

而不是

return RedirectToAction("SystemCoreHome");

使用

代码语言:javascript
复制
return PartialView("CreateNewNavigation_Partial", obj);

Ajax形式

代码语言:javascript
复制
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "TargetID" }))
{
   ...
}

<div class="_Form_Block" id="TargetID">
</div>
票数 1
EN

Stack Overflow用户

发布于 2015-04-13 12:55:09

你得处理这个案子。

目前,在ModelState无效的情况下,您不会做任何事情。尝试以下几点:

代码语言:javascript
复制
public ActionResult CreateNewFunctionNavigation(CreateFunctionNavigation_SP_Map obj)
{
  if (!ModelState.IsValid) 
  {
    return View(obj);
  }
// rest of method here
票数 0
EN

Stack Overflow用户

发布于 2015-04-13 12:57:47

代码语言:javascript
复制
if(ModelState.IsValid)
{
    _FN_Services_a2.CreateFunctionNavigation(obj);
} 
else 
{
    return View();
} 

应该能起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29605808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档