MVC3 C#4.0 /在视图之间传递变量

时间:2011-09-25 01:27:43

标签: asp.net asp.net-mvc-3 c#-4.0

C#和MVC的新手。我想要实现的是将一个变量作为ViewData从一个视图传递到另一个视图而不在ActionResult中使用ID,因为该视图会生成它自己的变量。我相信有更好的方法可以做到这一点,但在这里我认为可行。 首先我做了一个模型:

public class EventToShow
    {
        public Int64? ID { get; set; }

        public Int64? EventID { get; set; }
    }

然后我使用以下内容从第一个View(Telerik MVC GRID)传递变量EventID:

 columns.Template(item => Html.Raw(string.Format("<a href=\"{0}\">{1}</a>", Url.Action("tableread", "Home", new { id = (long)item.Event_ID }), "EventID"))).Width(20);

它在我的控制器中使用以下功能:

 [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult tableread1(long? id)
        {
            ViewData["EID"] = id;
            EventToShow ctx = new EventToShow();
            ctx.ID = 1;
            ctx.EventID = (long)ViewData["EID"];

            return RedirectToAction("EditServerSide");
        }

要将变量传递给另一个视图,我尝试使用以下内容(我认为这是非常错误的):

     public ActionResult EditServerSide()
        {

             EventToShow ctx = new EventToShow();
            var model1 = ctx.(x => x.ID == 1); **// The error here is (Identifier** expected)
            ViewData["EID"] = ctx.EventID;

            var model = from o in new Main().OffLinePayments
                        select new EditOffLinePayment
                        {
                            ID = o.ID,
                            Amount = o.Amount,
                            Details = o.Details 
                        };

  return View(model, ViewData["EID"]) **(this must be wrong)**
        }

我想也许我应该像这样制作变量:

private string GetFullName()
        {
            EventToShow ctx = new EventToShow();
            var name = EventToShow().Where(x => x.ID == 1);
            ViewData["EID"] = ctx.EventID;
            return name;
        }

首先我收到一个错误:'GridEdit_OfflinePayment.Models.EventToShow'是'类型'但是像'变量'一样使用

我也不知道如何在EditServerSide Action中合并返回的[name]。

我的问题是,有没有更好的方法来实现我想要做的事情,如果这种方法是正确的,我将不胜感激任何修复这些错误的帮助

1 个答案:

答案 0 :(得分:0)

据我所知,问题是你想在几个动作之间传递数据?像某种向导步骤一样,您可以在多个操作之间传递数据?

如果是这种情况,那么这里有一些相关问题及其答案:

How do I pass data across ActionResults in MVC 3?

multi-step registration process issues in asp.net mvc (splitted viewmodels, single model)