有一个表单,用户填写更新他们的帐户信息,一切正常,除了一个文本区域.一旦表单被POST,这个文本区域(它绑定到UserInfo的属性Comments)值就变为null. Comments属性是唯一的null属性.
何时发生
A)没有现有值,用户输入值,属性为空.
B)现有价值,用户做/不改变什么/什么,属性为空.
我只会包含相关代码以保持简洁.希望这就够了.
控制器动作
public ActionResult Edit_information(long ID){ // Get user info from the database. // Return the vIEw with the user info from the DB etc.}[httpPost]public ActionResult Edit_information(long ID,UserInfo userInfo){ if (!this.ModelState.IsValID) { // InvalID return VIEw(userInfo); } // Update the information in the DB. // Redirect the user back to their account.}
剃刀查看@R_404_6832@
<div >@@R_404_6832@.ValIDationMessageFor(x => x.Comments)</div>@@R_404_6832@.Partial("~/VIEws/Shared/_EditorSmiles.cs@R_404_6832@")@@R_404_6832@.TextAreaFor(x => x.Comments,new { @class = "EditorArea profile-comments" })
UserInfo模型
[ValIDator(typeof(UserInfovalIDator))]public class UserInfo{ public string Comments { get;set; }}
是的,我在模型上使用FluentValIDation.我删除它以查看它是否是原因,但事实并非如此.
我试过的事情
>在POST *** 作中,我使用了FormCollection formCollection而不是UserInfo userInfo.
>在POST *** 作上抛出异常以证明在发布时值变为null.
>创建了一个具有不同名称的新属性.
>在返回视图之前手动为属性赋值.发布时,该值变为null.
>手动为POST属性赋予属性值,以证明它不是数据库或sql.这很有效.
>从模型中删除了Fluent ValIDation属性(如上所述).
>在UserInfo userInfo之前使用[Bind(Prefix =“”)].这并没有改变任何事情.
令我感到沮丧的是,我不得不问:这到底是怎么回事?难道我做错了什么?我必须忽视一些事情.页面上还有另一个文本区域可以正常工作.它只是注释的文本区域,无论条件如何,它始终返回空值.
解决方法 表单被包装如下:@R_404_6832@.BeginWindow();@R_404_6832@.BeginForm("edit_information","user",FormMethod.Post,new { ID = "profile" });<!-- other stuff goes in between here -->@R_404_6832@.EndForm();@R_404_6832@.EnDWindow();
@R_404_6832@.BeginWindow()生成一个包裹在表单周围的表(窗口).这显然导致表单的某些部分无法正确发布.
变成:
@R_404_6832@.BeginForm("edit_information",new { ID = "profile" });@R_404_6832@.BeginWindow();<!-- other stuff goes in between here -->@R_404_6832@.EnDWindow();@R_404_6832@.EndForm();
巴姆!它再次起作用.这件事从未发生过,因为我之前没有遇到任何问题.我很高兴这是固定的.我们都会犯错.
总结以上是内存溢出为你收集整理的c# – 该文本区域为null全部内容,希望文章能够帮你解决c# – 该文本区域为null所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)