Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JQuery设置的TextArea值导致Model.IsValid为false_C#_Jquery_Asp.net Mvc_Razor_Kendo Ui - Fatal编程技术网

C# JQuery设置的TextArea值导致Model.IsValid为false

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,这不会导致任何内容写入数据库 如果我点击文本区域,在选择文件后再键入一些文本,然后保存,一切正常。出于某种原因,如果我尝试仅使用文件浏览器保存,并填写所

我在同一个剑道网格单元中有一个文件浏览器和一个文本区域。用户单击文件浏览器,选择文件,然后使用JQuery,我将textarea中的值设置为所选的文件路径。此textarea绑定到模型,然后将模型发送回控制器,并在保存时写入数据库。我使一切都按预期工作,除了单击“保存”,代码到达我在控制器中设置的断点时,Model.IsValid值为false,这不会导致任何内容写入数据库

如果我点击文本区域,在选择文件后再键入一些文本,然后保存,一切正常。出于某种原因,如果我尝试仅使用文件浏览器保存,并填写所有其他必填字段,而从未实际单击文本区域,则模型无效,且未写入任何内容。见下面的代码:

视图(所涉及的字段是“BackupLocation”):

JavaScript onSelect函数:

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
}