将ActionResult返回301

时间:2016-09-29 11:13:38

标签: c# asp.net-mvc redirect

我想为某个操作返回RedirectResult,但没有Url.Action()。假设我有以下Controller

public class CustomerController : Controller
{
    public ActionResult Index()
    {
        var url = Url.Action("CustomerAndProduct", new { customerId = 1, orderId = 2, productId = 3} );
        return Redirect(url);
    }

    public ActionResult CustomerAndProduct(int customerId, int orderId, int productId)
    {
        // I want to get here...
    }
}

有没有办法可以返回RedirectResult而无需通过使用字符串手动指定操作名称和所有参数?原因是我觉得维护这些字符串很麻烦如果操作名称或参数名称更改。然后在编译时没有检测到。

也许是这样:

var url = Url.FromAction<CustomerController>(x => x.CustomerAndProduct(1, 2, 3));
return Result(url);

非常像Futures library

Html.BeginForm<CustomerController>(x => x.CustomerAndProduct(1, 2, 3))

请注意,我不想执行CustomerAndProduct。我只想将网址作为301302返回。

1 个答案:

答案 0 :(得分:1)

听起来你要求某种类型的安全吗?如果有,请查看t4MVC https://github.com/T4MVC/T4MVC它会让你写

return RedirectToAction(MVC.Customer.CustomerAndProduct(1,2,3));