如果我有一个MVC模型(粗略简化)看起来像这样;
Name
但是,只有SpecialSauce
来自视图。服务器端提供person.SpecialSauce = "Ketchup"; //Hard-coded for example
。
ModelState.IsValid
但是,在保存之前,我会检查[Required]
,它返回false,错误为“需要SpecialSauce字段”。
如果在服务器端提供所需的模型属性,如何使ModelState有效?我可以删除content = open('contributors.csv','r').readlines()
content4set = set(content)
cleanedcontent = open('contributors-cleaned.csv','w')
for i, line in enumerate(content4set):
cleanedcontent.write("{}.{}".format(str(i+1),line.replace('பக்கம்','அட்டவணை_பேச்சு')))
line=line.strip()
print(line)
数据注释,但我希望EF数据库列不可为空。
答案 0 :(得分:1)
坦率地说,不太确定您希望SpecialSauce
必需,但又不允许用户在表单上输入SpecialSauce
的值,然后重写它在控制器中。
但是......如果需要SpecialSauce
,这里是一个答案。
由于您在服务器端设置person.SpecialSauce
,因此应在HttpGet
方法中进行设置。然后将整个对象返回到View。如果您不希望用户编辑该字段,请通过HTML或jQuery禁用它。
以下是一个例子:
<强>控制器强>
// GET: ControllerName/Create
public ActionResult Create()
{
var myPerson = new Person()
{
SpecialSauce = "Ketchup"
};
return View(myPerson); // assuming your view is named Create and it is expecting an object of type Person.
}
查看强>
@model Project.Models.Person // top of view
@Html.HiddenFor(model => model.SpecialSauce) // you can't submit disabled items to the server so create a HiddenField to hold the actual value for submission
@Html.TextBoxFor(model => model.SpecialSauce, null, new { @class = "form-control", @disabled = "disabled" }) // the textbox on page load should contain "Ketchup" and be disabled so the user can't edit the string
然后,您的ModelState将有效,然后您不必在HttpPost操作方法中设置它。
如果有帮助,请告诉我。