C# mvc3重定向作用

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

为什么这不起作用。当我在Create方法中重定向时,它一直告诉我edit需要一个EditStudyModel。重定向应该做一个get,对吗

    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)