2010-04-15 36 views
2

任何想法为什么下面的代码不会触发如果我把一些HTML内的textarea?它工作正常,我没有HTML,但我不知道为什么它不起作用。这是代码。MVC/HTML - 输入提交不会触发HTML文本区域时

<% using (Ajax.BeginForm("AddPost", new AjaxOptions { UpdateTargetId = "blogPosts" })) 
    { %> 
    <table> 
     <tr> 
      <td>Post Title:</td> 
      <td><input id="Title" type="text" name="title" /></td> 
     </tr> 
     <tr> 
      <td>Post Description:</td> 
      <td><textarea id="Description" name="description" rows="10" cols="60" wrap="virtual"></textarea></td> 
     </tr> 
    </table> 
    <input type="submit" value="Save" /> 
<%} %> 


    Here is what gets rendered (It's inside an Ajax form) 

     <div> 
     <form action="/Home/AddPost" method="post" onclick="Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: &#39;blogPosts&#39; });"> 
    <table> 
     <tr> 
      <td>Post Title:</td> 
      <td><input id="Title" type="text" name="title" /></td> 
     </tr> 
     <tr> 
      <td>Post Description:</td> 
      <td><textarea id="Description" name="description" rows="10" cols="60" wrap="virtual"></textarea></td> 
     </tr> 
    </table> 
    <input type="submit" value="Save" /> 
</form> 
    </div> 
+0

请澄清, “不工作”。另外,您使用的是哪种服务器端语言? – 2010-04-15 01:15:49

+0

不工作=点击提交按钮什么也没有发生。使用C#。 – 2010-04-15 01:25:01

+0

哪个HTML?它是否包含''?哪个浏览器? – BalusC 2010-04-15 01:26:40

回答

2

最终成为验证的事情。将以下内容添加到Web.config中并且它工作正常。

<httpRuntime requestValidationMode="2.0" /> 
<pages validateRequest="false" /> 
4

在你的控制器动作添加以下属性:

[ValidateInput(false)] 
public ActionResult AddPost() { } 

默认情况下,MVC将在形式检查HTML输入,除非你告诉它不通过将验证请求抛出一个异常控制器操作中的ValidateInputAttribute。

+0

否定的。当我按下按钮时,甚至没有进入代码。如果有帮助,我使用VS2010 MVC2.0。 – 2010-04-15 01:59:15

0

HTML标准不支持嵌套表单,这可能是导致您的问题的原因。尝试删除其中一个嵌套表格,看看是否有帮助。

+0

删除它。不起作用。 – 2010-04-15 03:20:01

1

为什么你不能使用Ajax.BeginForm?您需要在您的控制器后置方法中设置功能参数,如下所示:public ActionResult AddPost(string Title, string Description)。请注意,参数名称必须与数据来自的控件的ID匹配。

+0

我已经有这样的设置。如前所述,只有当您输入一个<后面有一个字母 2010-04-15 03:20:51