asp.net-mvc – 如何在MVC的Controller中省略/阻止数据被发送到POST方法

我有一个使用模型的视图,我正在使用该信息来创建表单.

我有三个表格的步骤是可选的或可能不会显示.

问题是这些隐藏的部分与表单数据一起发布并打破业务逻辑. (我无法控制业务逻辑)

那么有没有办法告诉框架不要传递某些部分或字段?也许VIA是一类还是什么?

我知道我可以使用AJAX在需要时发送某些部分,但网站规范是隐藏它们并根据需要显示.

最佳答案 显示/隐藏不允许/禁止将值发送到Controller.

禁用或不可编辑的元素(99%的时间)将返回null / minVal.

您可以在脚本中使用JQuery将视图中的元素设置为已禁用:

$('#elementID').attr("disabled", true);

或者您可以使用DOM命令:

document.getElementById('elementID').disabled = "true";

因此,您可以将字段设置为“已禁用”和“隐藏”,以便既不显示也不填充.然后在您的控制器中,您可以根据某些字段(优选的必填字段,如果有的话)是否为空来确定业务逻辑.

你可以用C#来检查这个:
对于字符串:

if (string.IsNullOrWhiteSpace(Model.stringField))
{
    ModelState.AddModelError("stringField", "This is an error.");
}

对于DateTime:

if (Model.dateTimeField == DateTime.MinValue)
{
    ModelState.AddModelError("dateTimeField ", "This is an error.");
}

为了感兴趣,以下是使用JQuery在View上隐藏/显示元素的方法:

$('#elementID').hide();
$('#elementID').show();
点赞