2

所以我有一个 Url Action

<a href="@Url.Action("Create","Teacher", new { createAndAssign = true, teacherID = Model.AccountID })">Create new teacher & assign to account.</a>

它传入两个 routeValue:createAndAssign 和teacherID。

现在,当我转到我的教师/创建页面时,我的 URL 是这样的:

.../Teacher/Create?createAndAssign=True&teacherID=ea817321-5633-4fdc-b388-5dba2c4a728e

哪个好,我想要这个。现在,当我发布创建老师时,如何获取 createAndAssign 和teacherID 值?

4

2 回答 2

4

您可以在表单中的隐藏变量中设置 Querystring 值,并在 GET 操作方法中呈现,并在 POST 操作方法中接受它。

GET由您的操作呈现的视图

@using (Html.BeginForm())
{
 //Other form elements also
  @Html.Hidden("teacher",@Request.QueryString["teacherID"] as string)
  @Html.Hidden("createAndAssign",@Request.QueryString["createAndAssign"] 
                                                                    as string)
  <input type="submit" />
}

现在teacher在您的操作方法中有一个参数和 createAndAssign 参数,HttpPost以便在您提交表单时可用。

[HttpPost]
public ActionResult Create(string teacher,string createAndAssign)
{
     //Save and Redirect      
}

如果你的视图是强类型的(这是我个人的偏好),这很容易,

public ActionResult GET(string teacherID,string createdAndAssing)
{
   var yourVMObject=new YourViewModel();
   yourVMObject.TeacherID=teacherID;
   yourVMObject.CreateAndAssign=createdAndAssing;
   return View(createdAndAssing);
}

在你的强类型视图中,

@model YourViewModel
@using (Html.BeginForm())
{
 //Other form elements also
  @Html.HiddenFor(x=>x.TeacherID)
  @Html.HiddenFor(x=>x.CreateAndAssign)                                     
  <input type="submit" />
}

在你的POST行动中

[HttpPost]
public ActionResult Create(YourViewModel model)
{
     //look for model.TeacherID
     //Save and Redirect      
}
于 2012-09-19T14:58:40.910 回答
1

您可以从查询字符串或控制器的参数中获取值,例如

var x =Request.QueryString["createAndAssign"];

或者

public ActionResult Create(bool createAndAssign, string teacherID){


 return View();
}
于 2012-09-19T14:49:50.677 回答