MVC在控制器中传递变量

时间:2012-08-16 04:00:02

标签: c# asp.net-mvc

不确定我是否遵循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")

2 个答案:

答案 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的方法。