2014-02-26 61 views
0

我有一個強類型的視圖,正在工作並接收從控制器發送的模型。Asp.Net強類型視圖和HTML

除了模型數據,我還需要記錄用戶從一組複選框中單擊的內容。這些複選框是在視圖加載時創建的,但不綁定到模型。

使用正常表單提交(發佈),是否將複選框值添加到HTTP消息正文?

對於強類型視圖,這似乎不會發生。

除了模型之外,用戶選擇是否有可能被髮送回控制器?

更新: 對不起,如果這不清楚。基本上我有2個數據庫 - 一個是我自己的自定義數據庫,用於存儲用戶交互記錄,另一個是cms。

cms保存用於生成複選框的數據,數據庫存儲用於生成綁定到視圖的模型的數據。

在我的模型中,我有一個ID可用於查詢cms以獲取生成複選框所需的數據,以便在視圖中完成此操作。這就是爲什麼事先不知道複選框的數量和名稱。

我需要將cb vales存儲爲逗號分隔列表intje db,以便操作系統爲什麼未查詢到表單數據。

原來這是很容易的......

的Request.Form

的伎倆

+0

一些代碼會有所幫助。然而,我的第一個問題是爲什麼不將這些屬性添加到模型並將複選框綁定到它們?這就是MVC的工作原理。如果擔心增加這個模型的事實是該模型在其他地方被使用,那麼這是一個關注點分離的問題;視圖模型應該僅用於視圖,遵循這個約定可以消除這個問題。 – mayabelle

+0

問題在於複選框在生成視圖之前未知。它們是在視圖內創建的。 – wingyip

+0

即使使用動態生成的數據,也可以綁定到模型。請回顧SO發佈問題的指導方針 - 如果您分享您的代碼,您更有可能獲得有用的答案。 – mayabelle

回答

1

您應該添加的複選框爲您的屬性強類型的對象。

這些值將在響應表單數據中返回。但添加屬性是最好的。如果你不能直接向類中添加屬性,請使用分部類。

+0

我將如何在控制器的響應表單數據中找到他們 – wingyip

1

您可以爲模型中的複選框添加屬性,然後他們將從表單數據填充。

您也可以在操作方法中爲複選框添加參數,然後它們將從表單數據填充。例如:

public ActionResult MyAction(MyModel model, bool check1, bool check2) { 

還可以拾取來自表單數據的值,而不限定任何屬性或參數:

bool check1 = Request.Form["check1"] == "on"; 
bool check2 = Request.Form["check2"] == "on"; 
1

2選擇我能想到的。

  1. 就像@KevDevMan所說的那樣。將它添加到模型中。模型上的bool值就可以做到。但如果你不需要這個,那就試試下一個。

  2. 這是下一個。爲這些複選框賦予唯一的名稱(name =「chkbox1」,name =「chkbox2」),並將這些操作添加爲具有相同變量名稱的參數(注意從我的經驗來看,這不區分大小寫)。所以你的行動會是這樣的。

    public ActionResult AfterSumbit(MyModel model, bool chkbox1, bool chkbox2) 
    

,或者如果你想複選框

public ActionResult AfterSubmit(MyModel model, string chkbox1, string chkbox2) 

這是由.NET自動執行,以便放心,這將相應地放置到變量的值。