帮我 ! ASP.NET中的MVC和AJAX工具包编辑器

时间:2011-06-13 13:56:15

标签: ajax asp.net-mvc

我有使用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();
    }

当我添加产品时,只添加了口号,内容为空。

我不明白以及如何修复它。 请帮帮我! 非常感谢!

1 个答案:

答案 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