1

我有一个包含对象的 viewModel。我为该对象定义了一个自定义编辑器模板,它允许我编辑该对象的每个子对象。子值在服务器端不是必需的(所以我没有任何必需的注释),但是如果用户到达这个特定的输入,它应该是必需的。

有什么方法可以在 POST 方法中检查这些子对象(在 viewModel 中)的值,如果它们为空,则向视图返回一些错误?

我正在使用剃须刀。

4

2 回答 2

1

在服务器端,您可以在操作中检查类的子对象,

[HttpPost]
public ActionResult Edit(MyClass myClass)
{
    if (myClass.Children.Any(child => child == null))
    {
        foreach(var child in myClass.Children
            .Where(child => child == null)
            .Select((item, index) => new { Item = item, Index = index))
        {

             ModelState.AddModelError(
                 string.Format("Children[{0}]", child.Index), 
                 "Must be required");
        }

        return this.View("...");
    }
}
于 2013-03-12T00:44:40.847 回答
0

您可以做的是编写一个检查用户输入的函数(在该字段中更改)

如果用户到达这个特定的输入

如果用户到达该特定输入,您可以使用 jQuery 将@class = "required"HTML 属性添加到您的对象。从那一刻起,它将成为required

看看这里:这是基于某些条件的必填字段的 jQuery 验证器。我想这正是你所追求的

编辑

您的另一个选择是使用 AJAX 返回服务器以验证您要查找的内容。例子在这里

希望这是有道理的,对你有帮助。

于 2013-03-11T23:10:53.413 回答