2011-11-22 71 views
0

我有一個C#.Net網絡應用程序,我試圖訪問我的提議模型的編輯視圖中的控制器中的HTML/ASP文本框之一。在非MVC應用程序中,我可以使用Control.ControlCollection.Find()執行此操作。是否有一個MVC3項目的等價物?MVC3按其名稱查找控件

+0

是否試着通過ID在HTML中訪問一個文本框,或者您試圖訪問控制器的一個ction? – Codeman

回答

2

您要求在MVC中的相當於Control.ControlCollection.Find()

在MVC中,您的控制器不知道控件

控制器僅通過參數接收數據並通過函數結果返回數據。

你想用控制器代碼中的控件做什麼?

如果您要訪問的值,你應該把它綁定到一個參數:

查看:

<input name="MyControl" type="text" /> 

控制器:

public ActionResult MyAction(string MyControl) { 
    // MyControl contains the value of the input with name MyControl 
} 
+0

@Jan ....是的,你是對的。措辭不好的問題。我想要做的是設置一些默認值。腦抽筋。我現在將默認值分配給模型的屬性.... – MikeTWebb

1

MVC模式的目的是讓事情分離。

  • 視圖已經在所有
  • 控制器中沒有控制器的知識,只知道一個視圖中存在什麼樣的數據,它需要。它不知道如何數據呈現。

因此,您永遠無法從控制器獲取有關控件/標籤的信息。您需要在視圖中使用javascript/jQuery,並在控制器中調用適當的操作。

0

在MVC應用程序中,您沒有像webform應用程序那樣的控件。
在MVC中,您可以在控制器中收集所需的數據並將其傳遞給視圖。 典型的視圖是一個帶有嵌入代碼的HTML頁面。
與產生HTML並處理MVC後處理的webforms中的控件相反,您必須手動完成所有這些操作。所以你沒有控制器的屬性和事件,你可以輕鬆地在控制器中訪問,你必須用你自己的代碼處理你的所有帖子。
這聽起來像是很多更多的工作 - 事實上它可能是如果你實現複雜控件的行爲 - 但MVC應用程序更好維護,並且對生成的HTML有100%的影響。

0

那麼可能我遲到了這一點,但它應該幫助其他人在未來...ü可以隱藏字段UR值存儲在視圖,然後通過下面的代碼訪問控制器值..

Request.Form["hfAnswerOrder"].ToString(); 

點 - hfAnswerOrder是隱藏字段的ID

我在CSHTML頁的控制..

@Html.Hidden("hfAnswerOrder", Model.Answers.ToList()[0].AnswerOrder)