【发布时间】:2013-09-25 13:48:25
【问题描述】:
我的问题与MVC Rest and returning views 非常相似,但答案对我不起作用。我已经使用 (http://restfulrouting.com/) 在我的 MVC 应用程序中实现了 Restful Routing。
当我想添加一条新记录时,网址是:
localhost/operations/1/exhibits/new
这将调用 New 操作,该操作将 New.cshtml 作为包含表单的视图返回。当用户提交表单并且在 Exhibits 控制器上成功调用 Create 操作时。
如果模型状态有错误,我想返回到新视图,用户输入的日期仍然存在,并显示错误消息(尚未实现)。
目前
return View("New", model)
发回数据并呈现“新建”视图,但 url 更改为:
/localhost/operations/1/exhibits
我检查了路由值,返回的操作仍然是“创建”。我有由操作和控制器值驱动的导航链接,不正确的 url 意味着这些链接无法正确呈现。
控制器
public class ExhibitController : Controller
{
public ActionResult Index()
{
CreateExhibitViewModel model = new CreateExhibitViewModel();
return View(model);
}
public ActionResult New()
{
return View();
}
[HttpPost]
public ActionResult Create(MyModel model)
{
if(!ModelState.IsValid)
{
return View("New", model")
}
// Process my model
return RedirectToAction("Index");
}
}
查看
@model RocketBook.Web.ViewModels.Exhibit.CreateExhibitViewModel
@{
Html.HttpMethodOverride(HttpVerbs.Put);
ViewBag.Title = "Operation " + ViewBag.OperationName;
}
<div class="panel panel-default">
<div class="panel-heading">
<h4>New Exhibit</h4>
</div>
<div class="panel-body">
<div class="col-lg-6 form-horizontal">
@using (var form = Html.Bootstrap().Begin(new Form("create", "exhibit").Id("newexhibit").Type(FormType.Horizontal).FormMethod(FormMethod.Post).WidthLg(4)))
{
@Html.AntiForgeryToken()
<fieldset>
<legend>Details</legend>
@Html.HiddenFor(m => m.OperationID)
@Html.HiddenFor(m => m.JobID)
@form.FormGroup().TextBoxFor(m => m.Barcode)
@form.FormGroup().TextBoxFor(m => m.ExhibitRef)
@form.FormGroup().TextBoxFor(m => m.ExhibitDescription)
@form.FormGroup().DropDownListFor(m => m.ClassificationGroupID, Model.ClassificationGroups).OptionLabel("")
@form.FormGroup().DropDownListFor(m => m.ClassificationID, Model.Classifications).OptionLabel("")
@form.FormGroup().DropDownListFor(m => m.ExhibitPriority, Model.EntityPriorities).OptionLabel("")
</fieldset>
<hr />
@(form.FormGroup().CustomControls(
Html.Bootstrap().SubmitButton().Style(ButtonStyle.Primary).Text("Add Exhibit")))
}
</div>
</div>
</div>
【问题讨论】:
标签: c# asp.net-mvc rest razor asp.net-mvc-routing