我有一個<asp:Content>
塊內的表單被提交給控制器。對於其中一個控件,我需要直接從它獲取一些信息,這不會通過調用UpdateModel()
自動發生。在ASP.NET MVC中,如何在提交表單時獲取控件的名稱?
但是,在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>
命名爲AuthorBio
控制顯示了在Form.Request
字典中的控制器ctl00$ContentPlaceHolder$AuthorBio$
我之所以試圖使用第三方控件與「runat-server」是因爲我需要設置編輯器的值如下:
AuthorBio.Value = HttpUtility.HtmlDecode(ViewData.Model.Bio);
試圖在FCKeditorV2標籤的.aspx文件中執行此操作不起作用。 (或者也許我也在那裏丟失了一些東西)
好吧,關鍵是要使用編輯器的JavaScript版本而不是封裝的控件。還有,我要在這裏包括陪接受的答案一個方便的評論:
你應該使用FCKEditor的控制JavaScript版本 不是.NET 自定義控件作爲.NET自定義 控制建立在WebForms 範式上。該JS版應具有用於HTML 的值,你可以在你的 使用控制器請求[「字段名」]
控件是否有runat = server?如果是這樣,請刪除。在我的iPhone上,所以我無法驗證是否是問題 – 2008-11-30 22:03:20
我需要「runat = server」部分,所以我可以在我的視圖的OnLoad中操縱控件。 – Jedidja 2008-11-30 22:05:45
「OnLoad」???這意味着您在View中執行業務邏輯。很多開發人員都在使用MVC,因爲他們認爲這是新的很酷的東西。你在做什麼應該是一個非MVC應用程序。 – 2008-11-30 22:39:07