2014-10-09 57 views
1

我必須從MVC中的viewbag屬性創建一個文本框。我可以做像@Html.TextBox("Comments", (string)ViewBag.Comments)這樣的映射,但是如何在頁面發佈到服務器時將其讀回。它沒有填充視圖包的財產。我對MVC很陌生,所以也許完全不瞭解這個概念。創建MVC中的View包並將其賦值給文本框

感謝

+0

'ViewBag'用於將值從控制器傳遞到視圖(而不是相反方向)。發佈時,表單集合將包含鍵「Comments」(控件的名稱)的值,但您最好創建一個代表要編輯的屬性的視圖模型,並讓MVC爲您完成所有綁定。 – 2014-10-09 01:16:34

回答

1

你ViewBag不會得到從您的視圖更新,這是不是從你的表格中獲取數據的方式。相反,您應該使用強類型模型綁定來從您的Action Method中讀取數據,或者您可以簡單地檢查表單數據中的密鑰。我向你展示兩個示例:

示例1:強類型模型綁定。

[HttpPost] 
    public ActionResult MyAction(string comments) 
    { 
     // the Comment from the text box. 

     return View(); 
    } 

例2:從發佈數據讀取:

[HttpPost] 
    public ActionResult MyAction() 
    { 
     // the Comment from the text box. 
     string comments = Request.Form["comments"]; 

     return View(); 
    } 

我希望你會喜歡用例1

總之,最好的做法是你的視圖綁定一個Model類並使用HtmlHelper生成如下文本框:

Html.EditorFor(model => model.Comments)

您的Model類包含名爲Comments的屬性。

而您的操作方法應接受與參數相同的模型類型。這裏是一個例子:

[HttpPost] 
    public ActionResult MyAction(MyModel model) 
    { 
     string comments = model.Comments; 

    } 

而且你應該綁定你的視圖與MyModel類型的模型。

我可以理解,由於您剛剛接觸MVC,因此現在可能並不明確,所以我建議您查看一些基本的MVC教程。您可以從這裏開始:http://www.asp.net/mvc/tutorials

相關問題