C# mvc3重定向作用
为什么这不起作用。当我在Create方法中重定向时,它一直告诉我edit需要一个EditStudyModel。重定向应该做一个get,对吗C# mvc3重定向作用,c#,asp.net-mvc,asp.net-mvc-3,redirect,C#,Asp.net Mvc,Asp.net Mvc 3,Redirect,为什么这不起作用。当我在Create方法中重定向时,它一直告诉我edit需要一个EditStudyModel。重定向应该做一个get,对吗 public ViewResult Create() { var createStudyModel = new CreateStudyModel(); return View(createStudyModel); } [HttpPost] public ActionResult Cre
public ViewResult Create()
{
var createStudyModel = new CreateStudyModel();
return View(createStudyModel);
}
[HttpPost]
public ActionResult Create(CreateStudyModel createStudyModel)
{
try
{
//TODO: Send CreateStudyCommand
return RedirectToAction("Edit", new { scientificStudyId = new Guid("{1C965285-788A-4B67-9894-3D0D46949F11}") });
}
catch
{
return View(createStudyModel);
}
}
[GET("ScientificStudy/Create/{scientificStudyId}")]
public ActionResult Edit(Guid scientificStudyId)
{
//TODO: Query real model
var model = new EditStudyModel() {StudyNr = "T01", StudyName = "Test"};
return View(model);
}
[HttpPost]
public ActionResult Edit(EditStudyModel editStudyModel)
{
try
{
//TODO: Send UpdateStudyCommand
return RedirectToAction(""); //TODO: Terug naar Studie lijst
}
catch
{
return View(editStudyModel);
}
}
如果返回URL为字符串的重定向,则控制器无法解析GUID并将其转换回GUID对象,因此无法解析要使用的正确方法签名。将其更改为:
return RedirectToAction("Edit", new { scientificStudyId = "{1C965285-788A-4B67-9894-3D0D46949F11}" });
及
我发现了问题。我将我的create.cshtml复制粘贴到edit.cshtml忘记更改第一行:
@model-Website.Models.CreateStudyModel
-->到-->@model-Website.Models.EditStudyModel
在您的编辑方法上什么是[获取(“科学研究/创建/{科学研究ID}”)
?因为get中的url可能应该是ScientificStudy/EDIT/{scientificStudyId}
,该属性可能会验证请求,以确保它找到正确的操作。我无法识别编辑操作中的[get]属性。这是自定义属性吗?它是mvc属性路由。你可以在NugetI上获得它。我将路径更改为[get(“ScientificStudy/Edit/{scientificStudyId}”)。但是它仍然不起作用。你能发布错误消息吗?写一个快速的样本对我来说很好。你确定是这样吗?默认的模型活页夹足够聪明,可以解决这个问题。是的,已经测试过了,效果很好。您可以将Edit方法的参数设置为Guid,它将正确解析。
public ActionResult Edit(string scientificStudyId)