如何将一个视图的信息传递给另一个视图?

时间:2011-06-09 09:30:23

标签: asp.net-mvc-3

我在asp .net mvc3课程注册表中设计了一个视图。这是一个非常简单的形式,有姓名,父亲姓名,资格和提交按钮,按下提交按钮后我想用另一个视图显示信息。请建议我如何将信息从一个视图发送到另一个视图。

我的控制器类是:

namespace RegistrationForm.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
           // ViewBag.Message = "Welcome to ASP.NET MVC!";

            //return View();
          return  RedirectToAction("registrationView");
        }

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

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

我的观点是:

@ {     Layout = null; }

    registrationView                                            输入名字                                     

       </td>
       <tr>
       <td>
          Enter Father Name
       </td>
       <td>
        <input type="text" name="fname" id="fname" />


       </td>
       <tr>
       <td>
          Enter Qualification
       </td>
       <td>
        <input type="text" name="qly" id="qly" />


       </td>

  </tr>
</table>
    <input type="submit" value="submit" />
</div>

5 个答案:

答案 0 :(得分:2)

好吧,之前我们遇到过这个问题,最好的方法就是定义一个这个页面可以使用的模型,然后在回发或重定向到另一个视图时使用这个模型对象。

对于您的情况,您可以在Models文件夹

中简单地定义此模型

ex:RegistrationModel.cs文件,并在里面定义您需要的属性。

完成后,您需要再做两个步骤:

1-在您的GET操作方法中,创建一个新的RegistrationModel对象,并将其提供给您的视图,而不是:

return View();

你需要这样的东西:

var registrationModel = new registrationModel();
return View(registrationModel);

2-将此模型用作POST Action方法中的参数,类似

[HttpPost]
public ActionResult registrationView(RegistrationModel model)    
{
  // your code goes here
}

但不要忘记修改当前视图以使用提供的模型。一个节省时间的方法是创建一个新的虚拟视图,并使用预定义的模板“创建”来生成您的视图,MVC将生成所有连接的属性。然后将生成的代码复制到所需的视图中,并省略任何不需要的代码。

这是一个伪回复。如果您需要更多代码,请告诉我

答案 1 :(得分:0)

use ViewData to store the valu如 请记住它只会持续一次旅行,所以如果你再试一次,那么价值就会被清除。

namespace RegistrationForm.Controllers { public class HomeController : Controller { public ActionResult Index() { // ViewBag.Message = "Welcome to ASP.NET MVC!";
    ViewData["myData"] = "hello world";

        //return View();
      return  RedirectToAction("registrationView");
    }

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

    public ActionResult registrationView()
    {
        // get back my data
        string data = ViewData["myData"] != null ? ViewData["myData"].ToString() : ""; 

        return View();
    }
}

您可以在重定向到registrationView后实际使用html / aspx / ascx上的ViewData值。

例如在registrationView.aspx上:

<div id="myDiv">
my data was: <%= ViewData["myData"] %>
</div>

答案 2 :(得分:0)

<% using Html.Form("<ActionName>") { %>
    // utilize this HtmlHelper action to redirect this form to a different Action other than controller that called it.
<% } %>

答案 3 :(得分:0)

你可以简单地在你的方法参数列表中声明带有控件名称的参数。例如:
这里的控件有一个id“qly” <input type="text" name="qly" id="qly" />
定义方法参数列表如下: public ActionResult YourMethod(string qly) { //simply pass your qly to another view using ViewData, TempData, or ViewBag,并在所需的视图中使用它
}

答案 4 :(得分:0)

完全由它制作的

You should use TempData,用于在行动之间保持价值。

此示例来自MSDN(上面的链接):

public ActionResult InsertCustomer(string firstName, string lastName)
{
    // Check for input errors.
    if (String.IsNullOrEmpty(firstName) ||
            String.IsNullOrEmpty(lastName))
    {
        InsertError error = new InsertError();
        error.ErrorMessage = "Both names are required.";
        error.OriginalFirstName = firstName;
        error.OriginalLastName = lastName;
        TempData["error"] = error; // sending data to the other action
        return RedirectToAction("NewCustomer");
    }
    // No errors
    // ...
    return View();
}

要将数据发送到视图,您可以使用模型或ViewBag