2011-06-15 88 views
1

我已经开始使用Ajax进行游戏,发现一个(希望是)小问题,我似乎无法找到答案。当输入字段中有HTML标签时,未提交Ajax表单

我我的网页上生成的Ajax表单列表,代码看起来像这样

using (Ajax.BeginForm("FixTranslation", new { translationId = errorGroup.Key.Id }, new AjaxOptions { UpdateTargetId = "targetCell_" + errorList.Key.Id })) 
{    
    <table> 
     <tbody> 
      <tr><td>@errorGroup.SourceText</td></tr> 
      <tr><td id="@("targetCell_" + errorGroup.Id)"><input type="text" name="text" id="@("target_" + errorGroup.Id)" value="@(errorGroup.TargetText.Replace(' ', (char)0x00A0))" /><input type="submit" value="Fix" /></td></tr> 

       @foreach (var error in errorGroup.Value) 
       {    
        <tr><td>@error.Description</td></tr> 
       }     

      </tbody> 
     </table> 
    } 

在控制器我有这样的动作:

public ActionResult FixTranslation(string projectId, int translationId, string text) 
{ 
    if (Request.IsAjaxRequest()) 
    { 
     return Content("You entered: " + new HtmlString(text)); 
    } 

    return RedirectToAction("GetProjectOverview", new { projectId = projectId }); 
} 

在没有角度也能正常工作在输入字段中出现括号,表单得到正确发送。但是当输入字段中有一些尖括号(例如“这是带有< 1>标签的文本”)时,我的操作方法根本不会被调用。

有人知道为什么会发生这种情况吗?

非常感谢。

回答

1

已解决。它不是特定于Ajax表单,原因是请求验证,可以通过这种方式关闭特定操作方法:

[ValidateInput(false)] 
public ActionResult FixTranslation(string projectId, int translationId, string text) 
{ 
    ... 
}