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]。
我的问题是,有没有更好的方法来实现我想要做的事情,如果这种方法是正确的,我将不胜感激任何修复这些错误的帮助
答案 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)