我有一个使用模型的视图,我正在使用该信息来创建表单.
我有三个表格的步骤是可选的或可能不会显示.
问题是这些隐藏的部分与表单数据一起发布并打破业务逻辑. (我无法控制业务逻辑)
那么有没有办法告诉框架不要传递某些部分或字段?也许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();