2011-09-25 44 views
0

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

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

     public Int64? EventID { get; set; } 
    } 

然后我从第一个视图(Telerik的MVC GRID)传递的变量事件ID使用下列内容:

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]。

我的问题,是有没有更好的方式来实现什么,我试图做的,如果这种做法是正确的,我是这么理解的,问题是我希望得到任何帮助修复这些错误

+0

我检查这个链接,并找到了答案http://msdn.microsoft.com/en -us /库/ dd394711.aspx。 – hncl

+0

最好将您的链接发布为答案并将其标记为一个。这样人们会看到这个问题已经被回答了,没有人需要看它;) –

+0

解决方案没有按我所希望的那样工作,变量没有传递给第三个动作。 – hncl

回答