asp.net MVC中同一个控制器和视图上的多个动作

时间:2009-08-31 03:35:42

标签: c# asp.net-mvc string response

如何在同一个控制器上使用多个操作?

我正在使用在asp.net mvc中打开新项目时出现的默认项目。

我在homecontroller上添加了一个Index动作来接受来自文本框的值......就像这样

 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#中很明显。但是,如何将消息传回给用户。 感谢

3 个答案:

答案 0 :(得分:3)

嗯,控制器根据发送的参数匹配一条路线。您可以将路径从最具体到最不具体分层,然后按顺序检查。第一个击中胜利的人。

另一个答案是强烈键入发送到视图的模型,或将其存储在ViewData中:

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

然后在您的视图中访问它:

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

答案 1 :(得分:1)

乔希,看到你问的上一个问题。

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

它是Model.myInput,它将模型中的值放入yoru文本框的文本中。

修改

或者,如果您不想在文本框中使用它,那么只需执行;

编辑2

您可以在新的表单视图模型中添加任意数量的项目,在这种情况下,它与数据库无关。看看你之前关于我宣布上课的地方的问题。

该类可以包含任意数量的属性。因此,您可以添加string myResponse {get;set;}以将回复返回给您的视图,以便您可以使用<%=Model.myResponse%>

希望这有帮助。

答案 2 :(得分: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();
}