不确定我是否遵循MVC约定但是我有一些变量从一个Controller A传递到Controller B.我的目标是让另一个名为'Publish'的视图与ActionLink
进行一些处理,点击它。
来自控制器A的重定向:
var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Publish", new { accTok = facebookAccessTok, fullImgPath = fullpath });
return Json(new { Url = redirectUrl });
我现在在控制器B的“发布”索引中有'accTok'和'fullImgPath'的值,在其视图中包含一个ActionLink来进行处理,但我不知道如何将它们传递给我'发布'ViewResult'方法:
namespace SF.Controllers
{
public class PublishController : Controller
{
public ViewResult Index(string accTok, string fullImgPath)
{
return View();
}
// This ViewResult requires the values 'accTok' and 'fullImgPath'
public ViewResult Publish()
{
// I need the values 'accTok' and 'fullImgPath'
SomeProcessing();
return View();
}
public SomeProcessing(string accessToken, string fullImagePath)
{
//Implementation
}
}
}
索引视图:
@{
ViewBag.Title = "Index";
}
<h2>Publish</h2>
<br/><br/>
@Html.ActionLink("Save Image", "Publish")
答案 0 :(得分:0)
我建议这样做
public ViewResult Publish(string accTok, string fullImgPath)
{
SomeProcessing(accTok,fullImgPath);
return View();
}
答案 1 :(得分:0)
在您的控制器中:
public ViewResult Index(string accTok, string fullImgPath)
{
ViewModel.Acctok = accTok;
ViewModel.FullImgPath = fullImgPath;
return View();
}
public ViewResult Publish(string accTok, string fullImgPath)
{
SomeProcessing(accTok,fullImgPath);
return View();
}
在视图中:
@Html.ActionLink("Save Image", "Publish","Publish",new {accTok=ViewModel.Acctok, fullImgPath=ViewModel.FullImgPath},null )
除了ActionLink之外,你还可以使它成为一个带有隐藏输入字段的表单(如果这个方法改变了数据库/磁盘上的东西,它实际上应该在一个帖子中)。
但是无论如何使用viewmodel将索引操作中的参数传递给视图,以便反过来将它们发送到发布操作。这通常是在MVC中使用无状态Web的方法。