任何人都可以帮助在MVC3 / C#中将表单从一个视图转移到另一个视图吗?
以下是该方案:
1)我创建了一个页面,我有大约6个字段供用户输入,一旦用户提交该字段,它就会将它们重定向到评论页面。
2)一旦用户进入评论页面,他在创建页面中输入的信息就会出现在那里(供用户确认)。
3)评论页面上会有一个编辑按钮,所以如果用户点击编辑按钮,那么他应该回到他输入所有信息的创建页面,这样他就可以再次更新它们。
我们可以使用ViewData / ViewBag或部分视图来处理这种情况吗?我不知道该怎么做。
答案 0 :(得分:2)
您应该在Models文件夹中创建一个类,让我们将其命名为MyViewModel,然后您将在该类中定义用户需要编辑的所有6个属性。 在创建视图中,您将在定义的表单元素中显示所有输入字段,以回发到审核操作。您的观点的重要部分将是:
@model MyViewModel
@using (Html.BeginForm("Review", "MyController"))
{
//here there's your input field
@Html.TextBoxFor(m => m.prop1)
// and so on
}
在MyController类中,您将Review方法定义如下
public ActionResult Review(MyModel mm)
{
if (ModelState.IsValid)
{
return View(mm);
} else return RedirectToAction("Create");
}
最后,在您的评论视图中,您将拥有:
@model MyViewModel
//show up all the field to be reviewed
@Html.DisplayFor(m=>m.prop1)
//and so on
// now a form to pastback again all the data to the edit page
@using (Html.BeginForm("Edit", "MyController"))
{
//here there's your hidden field
@Html.HiddenFor(m => m.prop1)
// and so on
<input type="submit" value="Re-edit the fields"/>
}
您的控制器类MyController将具有以下代码:
public class ViaggioController : Controller
{
public ActionResult Create()
{
var emptyModel = new MyViewModel();
return RedirectToAction("Edit", new { mm = emptyModel });
}
public ActionResult Edit(MyViewModel mm)
{
return View(mm);
}
public ActionResult Review(MyViewModel mm)
{
if (ModelState.IsValid)
{
return View(mm);
}
else
return RedirectToAction("Create");
}
}
答案 1 :(得分:0)
我看到你正在使用Asp.Net MVC,所以我假设你的Create View由一个Model对象支持,该对象包含用户输入的6个字段,并且你使用内置的Model Validation?如果是这样,您需要做的就是: