如何保留GET ActionResult中的参数值以在POST ActionResult中重用?

时间:2012-01-30 17:24:46

标签: c# asp.net-mvc-3

我正在向GET ActionResult发送参数:

public ActionResult MyFormLetter(string studentName, string teacherName, string courseName, string appointmentDate)
{    
    // Do stuff here;
}

单击调用POST ActionResult的表单按钮后,这些值超出范围。我可以保留GET ActionResult中的值,以便在Post ActionResult中重用吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

你有一个强类型的视图吗?你的视图应该有一个模型,其中包含Get right(studentname,teachername ......等)的值

然后在Post Action上,它可以接受同一个类的参数,模型将自动从表单变量中获取值(它会尽可能自动地将值与模型的属性匹配)。

答案 1 :(得分:2)

您应该使用ViewModel以及强类型视图。像这样的东西会起作用:

public class StudentInformation
{
    public string StudentName { get; set; }
    public string TeacherName { get; set; }
    public string CourseName { get; set; }
    public string AppointmentDate { get; set; }
}

您的Action方法如下所示:

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

[HttpPost]
public ActionResult MyFormLetter(StudentInformation studentInformation)
{
    // do what you like with the data passed through submitting the form

    // you will have access to the form data like this:
    //     to get student's name: studentInformation.StudentName
    //     to get teacher's name: studentInformation.TeacherName
    //     to get course's name: studentInformation.CourseName
    //     to get appointment date string: studentInformation.AppointmentDate
}

一点点查看代码:

@model StudentInformation


@using(Html.BeginForm())
{
    @Html.TextBoxFor(m => m.StudentName)
    @Html.TextBoxFor(m => m.TeacherName)
    @Html.TextBoxFor(m => m.CourseName)
    @Html.TextBoxFor(m => m.AppointmentDate)

    <input type="submit" value="Submit Form" />
}

当您从提交的POST到达Action方法时,您将可以访问输入到表单视图中的所有数据。

免责声明:View代码仅显示必要的元素,以显示如何在模型绑定的模型中保存数据。

答案 2 :(得分:0)

您可以将这些值放在隐藏字段中,以便将它们发布到您的POST操作中,然后您可以将它们捆绑在POST方法的ActionResult中。