gpt4 book ai didi

c# - return View(model) 和 return RedirectToAction ("ViewName",model) 有什么区别

转载 作者:行者123 更新时间:2023-11-30 22:37:21 25 4
gpt4 key购买 nike

我无法让我的 Index() 操作将有效模型传递给我的 Review() 操作

... ActionResult 索引()...

            else
{
return RedirectToAction("Review", wizard); <--wizard is a valid object here....

}

ActionResult Review()

    public ActionResult Review()
{
return View(_wizard); <-- THis is always null.
}

更新:这是我的整个 Controller 。我想将用户从向导索引带到评论页面,最后转到实际保存数据的传输页面。我在思考最后一 block 时遇到了真正的问题。当您习惯了必须从头开始明确编写所有内容的 asp classic 时,很难习惯 MVC3 中的 Magic 继承。所以,我敢打赌我写了很多不需要的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using mvc3test.Models;
using Microsoft.Web.Mvc;
using System.Web.Mvc;
using mvc3test.Services;

namespace mvc3test.Controllers
{

public class WizardController : Controller
{

private WizardViewModel wizard = new WizardViewModel();
private DR405DBContext db;

public WizardController(IDBContext dbContext)
{
db = (DR405DBContext)dbContext;
}

public WizardController()
{
db = new DR405DBContext();
}

public ActionResult Index()
{

wizard.Initialize();
return View(wizard);
}

[HttpPost]
public ActionResult Index([Deserialize] WizardViewModel wizard, IStepViewModel step)
{

wizard.Steps[wizard.CurrentStepIndex] = step;
if (ModelState.IsValid)
{
if (!string.IsNullOrEmpty(Request["next"]))
{
wizard.CurrentStepIndex++;
}
else if (!string.IsNullOrEmpty(Request["prev"]))
{
wizard.CurrentStepIndex--;
}
else
{
return View("Review", wizard);

}
}
else if (!string.IsNullOrEmpty(Request["prev"]))
{
wizard.CurrentStepIndex--;
}
return View(wizard);


}


[AllowAnonymous]
public ActionResult Review(WizardViewModel model)
{
return View(model);
}

[AllowAnonymous]
[HttpGet]
public ActionResult Review(Int32 ID)
{
var service = new DR405Service(db);
var myWizard = service.WireUpDataModelToViewModel(service.DBContext.dr405s.Single(p => p.ID == ID));

return View(myWizard);
}


public ActionResult Transmit()
{
var service = new DR405Service(db);
service.Wizard = wizard;
service.Save();
return View();
}


}
}

最佳答案

根据 msdn RedirectToAction 将导致对 Review 操作的另一个获取请求。

Returns an HTTP 302 response to the browser, which causes the browser to make a GET request to the specified action.

这会导致 wizard 对象丢失其值并需要重新填充。

View() 仅返回与当前上下文中的该操作关联的 View 。

您可以将 wizard 放在 TempData 中,返回 View("Review", wizard),或者将 wizard 作为路由值传递,如果可能。

关于c# - return View(model) 和 return RedirectToAction ("ViewName",model) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com