我有使用Ajax工具包编辑器控件的视图。
查看CreateProduct
<fieldset>
<legend>Product information</legend>
<table align="center">
<tr>
<td><label for="slogan">Slogan:</label></td>
<td><%= Html.TextBox("slogan")%></td>
</tr>
<tr>
<td><label for="content">Content :</label></td>
<td>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<cc1:Editor ID="content" runat="server" Height="300px" />
</td>
</tr>
</table>
</fieldset>
ProductController的:
public ActionResult CreateProduct(string slogan, string content)
{
ProductDataContext data = new ProductDataContext();
PRODUCT p = new PRODUCT();
p.SLOGAN = slogan;
p.CONTENT = content;
data.AddProduct(p);
data.SubmitChanges();
return View();
}
当我添加产品时,只添加了口号,内容为空。
我不明白以及如何修复它。 请帮帮我! 非常感谢!
答案 0 :(得分:1)
这种方式不起作用。您正在将ASP.NET WebForms与MVC混合使用。 ID =“content”仅设置Editor控件的服务器端ID。但是,控制器参数由表单字段名称映射,在您的情况下,将自动生成相应textarea的名称。我不知道您通常可以更改ASP.NET呈现的控件的名称。但是,您可以尝试以下方法:
<script type="text/javascript">
document.getElementById('<%= content.ClientID =>').name = 'content';
</script>
将它放在视图的底部。它可能会起作用。
请记住,即使它有效,上面也是一个肮脏的黑客。 MVC项目中的正确方法是使用客户端脚本初始化Editor控件。这并不总是容易但可行。作为参考,请尝试查看此页面的来源:
http://www.asp.net/ajax/ajaxcontroltoolkit/samples/htmleditor/OtherSamples/ClientSide.htm