2009-08-31 63 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

相关问题