C# JQuery设置的TextArea值导致Model.IsValid为false
我在同一个剑道网格单元中有一个文件浏览器和一个文本区域。用户单击文件浏览器,选择文件,然后使用JQuery,我将textarea中的值设置为所选的文件路径。此textarea绑定到模型,然后将模型发送回控制器,并在保存时写入数据库。我使一切都按预期工作,除了单击“保存”,代码到达我在控制器中设置的断点时,Model.IsValid值为false,这不会导致任何内容写入数据库 如果我点击文本区域,在选择文件后再键入一些文本,然后保存,一切正常。出于某种原因,如果我尝试仅使用文件浏览器保存,并填写所有其他必填字段,而从未实际单击文本区域,则模型无效,且未写入任何内容。见下面的代码: 视图(所涉及的字段是“BackupLocation”): JavaScript onSelect函数:C# JQuery设置的TextArea值导致Model.IsValid为false,c#,jquery,asp.net-mvc,razor,kendo-ui,C#,Jquery,Asp.net Mvc,Razor,Kendo Ui,我在同一个剑道网格单元中有一个文件浏览器和一个文本区域。用户单击文件浏览器,选择文件,然后使用JQuery,我将textarea中的值设置为所选的文件路径。此textarea绑定到模型,然后将模型发送回控制器,并在保存时写入数据库。我使一切都按预期工作,除了单击“保存”,代码到达我在控制器中设置的断点时,Model.IsValid值为false,这不会导致任何内容写入数据库 如果我点击文本区域,在选择文件后再键入一些文本,然后保存,一切正常。出于某种原因,如果我尝试仅使用文件浏览器保存,并填写所
function onSelect(e){
var l = $("LocationSelector").val();
var s = $("BackupLocation");
s.val(l);
}
控制器方法:
public ActionResult InsertFoo([DataSourceRequest] DataSourceRequest request, FooModel fooModel)
{
if(fooModel != null && ModelState.IsValid) //this is where I leave my breakpoint. ModelState.IsValid is false so the rest of the code is skipped
{
//skipped code
}
}
为了时间的缘故,我已经编辑了很多不相关的代码(我不能从我正在工作的机器上复制和粘贴),但我认为这让我明白了这一点
非常感谢您的帮助
更新
这是我正在使用的模型,忘了包括它
public class FooModel
{
public int ID {get; set;}
[Required(ErrorMessage = "Please Select a Type")]
public string Type {get; set;}
[Required(ErrorMessage = "Please Select a Requestor")]
public string RequestedBy {get; set;}
[Required(ErrorMessage = "Please provide file location")]
public string BackupLocation {get; set;}
//...Other fields
}
在EditorTemplate中,您正在从自己的模型创建文本区域,这是正确的还是打字错误@Html.TextAreaFor(m=>m,)。当您在
ModelState.IsValid
上中断点时,能否将ModelState.Values
放入监视窗口,将其展开并告诉我们错误数组的内容?@padhraic唯一的错误实际上是我输入的字段验证错误,因为我希望字段是必需的。当我提交表单时,它不会显示,但当我在控制器的断点处查看它时,它会显示在模型中。@Padhraic如果我在模型中注释掉字段验证并尝试提交,它会提交并通过断点,但是,我用字段选择设置的值仍然没有保存到数据库中。在您的编辑器模板中,您正在从自己的模型创建文本区域,这是正确的还是拼写错误@Html.TextAreaFor(m=>m,)。当您在ModelState.IsValid
上中断点时,能否将ModelState.Values
放入监视窗口,将其展开并告诉我们错误数组的内容?@padhraic唯一的错误实际上是我输入的字段验证错误,因为我希望字段是必需的。当我提交表单时,它不会显示,但当我在控制器中的断点处查看它时,它会显示在模型中。@Padhraic如果我在模型中注释掉字段验证并尝试提交,它会提交并通过断点,但是我用字段选择设置的值仍然不会保存到数据库中
public ActionResult InsertFoo([DataSourceRequest] DataSourceRequest request, FooModel fooModel)
{
if(fooModel != null && ModelState.IsValid) //this is where I leave my breakpoint. ModelState.IsValid is false so the rest of the code is skipped
{
//skipped code
}
}
public class FooModel
{
public int ID {get; set;}
[Required(ErrorMessage = "Please Select a Type")]
public string Type {get; set;}
[Required(ErrorMessage = "Please Select a Requestor")]
public string RequestedBy {get; set;}
[Required(ErrorMessage = "Please provide file location")]
public string BackupLocation {get; set;}
//...Other fields
}