所以我有一个网址操作
<a href="@Url.Action("Create","Teacher", new { createAndAssign = true, teacherID = Model.AccountID })">Create new teacher & assign to account.</a>
传递两个routeValues:createAndAssign和teacherID。
现在当我进入我的教师/创建页面时,我的网址就是这样:
.../Teacher/Create?createAndAssign=True&teacherID=ea817321-5633-4fdc-b388-5dba2c4a728e
哪个好,我想要这个。现在当我发布POST来创建我的老师时,如何获取createAndAssign和teacherID值?
答案 0 :(得分: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
操作方法中有一个HttpPost
参数和createAndAssign参数,以便在您提交表单时可以使用该参数。
[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
}
答案 1 :(得分:1)
您可以从查询字符串中获取值,或者像
那样获取控制器的参数var x =Request.QueryString["createAndAssign"];
或
public ActionResult Create(bool createAndAssign, string teacherID){
return View();
}