1

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

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

我在主控制器上添加了一个索引操作以接受来自文本框的值......就像这样

 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# 中是显而易见的。但是,那么我如何将消息返回给用户。谢谢

4

3 回答 3

3

好吧,控制器根据发送的参数匹配一个路由。您可以将路线从最具体到最不具体分层,它会按顺序检查。第一个命中的获胜。

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

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

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

<%= Html.Encode(ViewData["Message"]) %>
于 2009-08-31T03:47:41.503 回答
1

乔希,请参阅您提出的上一个问题。

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

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

编辑

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

编辑 2

您可以将尽可能多的项目添加到新的表单视图模型中,在这种情况下,它与数据库无关。请参阅您之前关于我在哪里宣布课程的问题。

该类可以具有任意数量的属性。因此,您可以添加 astring myResponse {get;set;}以将响应返回到您的视图,以便您可以使用<%=Model.myResponse%>

希望这可以帮助。

于 2009-08-31T03:43:37.173 回答
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();
}
于 2009-08-31T04:22:13.133 回答