2009-08-31 64 views
1

如何在同一個控制器上使用多個操作?對asp.net中同一個控制器和視圖的多個操作MVC

我使用在asp.net mvc中打開一個新項目時出現的默認項目。

我增加了一個索引行動HomeController的接受一個文本框的值...這樣

string strTest; 
     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Index(FormCollection frm) 
     { 
      strTest = frm["testbox"]; 

      return RedirectToAction("Index"); 
     } 

現在,我需要顯示所輸入的值返回給用戶。我該怎麼做呢?

我想這個..

public ActionResult Index() 
{ 
    this.ViewData.Add("ReturnMessage", strValue); 
    return View(); 
} 

這裏是我已經把我的看法..

<% using (Html.BeginForm()) 
    { %> 
<p> 
    <%=Html.TextBox("testbox")%> 
</p> 
<p> 
    <input type="submit" value="Index" /></p> 
<p> 
    <%= Html.ViewData["ReturnMessage"] %> 
</p> 
<% } %> 

編譯器通常不會讓我補充另一個指標具有相同的構造,以顯示輸入的消息回到用戶,這是明顯的C#我知道。但是,如何將該消息返回給用戶。 謝謝

回答

1

簡單的方法

在您身邊

<% using (Html.BeginForm()) {%> 
    <%= Html.TextBox("myInput") %> 
    <%= ViewData["response"] %> 
<%}%> 

在您的控制器中;

public ActionResult Index() 
{ 
    return View(); 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(FormCollection collection) 
{ 
    ViewDate.Add("response", collection["myInput"]); 
    return View(); 
} 
+0

明白了...... 對不起,這是我犯的一個愚蠢的錯誤...因爲我也是從數據庫返回實體框架way.I返回view()而不是傳回該數據,所以它拋出了對象引用異常。 再次感謝 – Josh 2009-08-31 04:36:56

+0

沒有probs Josh。很高興我們幫你工作。 – griegs 2009-08-31 04:39:53

1

喬希,看到你問的前一個問題。

在那裏我有<%= Html.textbox("myInput", Model.myInput....

那就是會把值從模型到夜文本框中的文本Model.myInput。

編輯

或者,如果你不希望它在文本框中,然後簡單地做;

EDIT 2

你可以儘可能多的項目添加到您的新表單視圖模式,它,在這種情況下,任何與數據庫做。看到你以前的問題,我在哪裏宣佈這個班。

該類可以擁有儘可能多的屬性,只要你喜歡。因此,您可以添加一個string myResponse {get;set;}以將回復返回給您的視圖,以便您可以使用<%=Model.myResponse%>

希望這有所幫助。

+0

我知道......但現在......我只是做了一個沒有模型的測試...因爲我需要教別人不知道mvc。 – Josh 2009-08-31 03:46:03

+0

我認爲模型的意義在於你不需要將數據庫導入到項目中並構建一個edmx文件等等嗎? – Josh 2009-08-31 03:47:13

+0

我仍然認爲你應該這樣教,因爲它是最好的方式。我其實並不是ViewData的忠實粉絲,但這是個人的。我總是喜歡模型方法。參見編輯2 – griegs 2009-08-31 03:48:05

3

那麼,一個控制器根據發送的參數匹配一個路由。你可以從最具體到最不具體的層次你的路線,它按順序檢查。第一個贏得勝利。

對方回答是要麼強類型模型發送到您的視圖,或將其存儲在ViewData的:

ViewData["Message"] = "Welcome to ASP.NET MVC!"; 

然後訪問它在你的視野:

<%= Html.Encode(ViewData["Message"]) %> 
+0

該視圖接受一個模型,它與數據庫或其他任何與存儲視圖數據無關的模型。您可以通過定義一個類來重載該模型,然後在視圖中「繼承」該類。重載的類可以包含多組數據,如城市列表和產品列表(視圖需要的任何內容)。 – 2009-08-31 03:54:57

+2

+1正確。到目前爲止,最好的方法,而不是使用集合[「???」];我的想法是。 – griegs 2009-08-31 04:00:00

+0

ViewData [「Message」]在我的回發操作中不起作用。如果用戶在文本框中輸入他們的名字,我想用你好和他們的名字打招呼 – Josh 2009-08-31 04:17:54

相關問題