在ASP.NET MVC中,如何在提交表单时获取控件的错位名称?

Jed*_*dja 2 asp.net-mvc

我在一个<asp:Content>块中有一个表单正在提交给控制器.对于其中一个控件,我需要直接从中获取一些不会通过调用自动发生的信息UpdateModel().

但是,在Request.Form字典中,控件的id是错误的形式ctl00$ContentPlaceHolder${name}.鉴于我在控制器中,并且此时对视图一无所知,访问控件数据的正确方法是什么?

以下是视图(.aspx)的外观(删除了无关的代码):

<%@ Register Assembly="FredCK.FCKeditorV2" Namespace="FredCK.FCKeditorV2" TagPrefix="FCKeditorV2" %>

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Admin.Master" AutoEventWireup="true"
    CodeBehind="...." Inherits="...." %>

<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder" runat="server">

    <form id="form1" action="..." method="post">

            <FCKeditorV2:FCKeditor ID="AuthorBio" runat="server" Height="250"/>
            <input type="submit" value="Save" />
    </form>

</asp:Content>
Run Code Online (Sandbox Code Playgroud)

名为的控件AuthorBio显示在Form.Request字典中的控制器中ctl00$ContentPlaceHolder$AuthorBio$

我试图将第三方控件与"runat-server"一起使用的原因是因为我需要设置编辑器的Value如下:

AuthorBio.Value = HttpUtility.HtmlDecode(ViewData.Model.Bio);
Run Code Online (Sandbox Code Playgroud)

尝试在FCKeditorV2标记的.aspx文件中执行此操作不起作用.(或许我也错过了一些东西)

好的,关键是使用JavaScript版本的编辑器而不是包装控件.还有一个方便的评论,我将在这里包括以接受已接受的答案:

你应该使用FCKEditor控件的javascript版本而不是.NET自定义控件,因为.NET自定义控件是在WebForms范例上构建的.JS版本应该有一个Html值的隐藏字段,您可以使用Request ["FieldName"]在控制器中访问该字段

Tre*_*oek 6

FCKEditor是一个标准的javascript库,它也包含在Webforms的ASP.NET控件中.因此,在没有ASP.NET控件的情况下使用FCKEditor javascript会更容易.以这种方式集成到MVC会更容易.

如果必须使用ASP.NET控件版本,那么您将遇到这些问题.但是一种解决方案是将FCKeditor置于标准的webforms页面上,然后在使用Greybox之类的对话框中显示.