繁体   English   中英

验证失败时的MVC 5剃刀处理视图

[英]MVC 5 Razor handling view when validation fails

我有一个带有WebGrid的MVC Razor布局。

@Html.ValidationSummary()
<div>

    @model List<DelsDTO>   

    @{
        var grid = new WebGrid(Model, defaultSort: "Name");
    }

    @grid.GetHtml(headerStyle: "webgrid-header", columns: grid.Columns(

    grid.Column(header: "Select", format: @<text><input name="checkedDelUnits" type="checkbox" value="@item.delId" /></text>),
    grid.Column("DelId", header: "ID"),
    grid.Column("Name", style: "nameColLen"),
    grid.Column("CRate", header: "C Rate", style: "span1", format: (item) => 
        (item.CRate == null) ? String.Empty : String.Format("{0:0.00}", @item.CRate))
     )
     )

    <td><input type="submit" name="saveChanges" value="Save Changes" /></td>
 }
</div>

使用提交按钮,我在控制器方法中执行验证检查。 如果验证失败,我设置:

ModelState.AddModelError("", "No records Selected");
return View("Search");

此时,我没有该视图的数据源,因此它以空网格返回。 处理此问题的最佳实践是什么?

是否应该将Webgrid数据源(模型)从视图传递到控制器,以便仅在验证失败时将其传递回控制器? 如果是这样,那该怎么办?

如果验证失败,则基本上需要再次创建模型,因为它不会保存在任何地方。 因此,如果在最初的操作中您正在做类似的事情(只是以下想法):

var model = GetGridModel();
return View("Search", model);

验证失败时,您需要对提交执行相同的操作:

ModelState.AddModelError("", "No records Selected");
var model = GetGridModel();
return View("Search", model);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM