2016-08-20 59 views
-1

我想分配EST_IDindex.cshtmlCreate.cshtml视图,它使用Html.Editorfor(model=>model.EST_ID)数据EditorFor。如何分配使用TempData的或ViewBag

如何在index.cshtml获得EST_ID从表分配EST_ID使用TempData的或ViewBag Html.Editorfor(model=>model.EST_ID)

这里是我的控制器代码

public ActionResult Publication(int id) 
{ 
    if (ModelState.IsValid) 
    { 
     string est = db.EstimateHeaders.Find(id).ToString(); 
     ViewBag.EST_ID=est; 
     return RedirectToAction("Create", "EP"); 
    } 
    return View(); 
} 

这里的Create.cshtml代码

@Html.EditorFor(model=>model.EST_ID, 
    htmlAttributes : new { @placeholder="EST_ID", 
          @class = "form-control", 
          @readonly = "readonly", 
          @required = "required" }) 

如何从EST_ID值index.cshtml分配给create.cshtml EditorFor?

回答

0

你的例子有几个问题。

首先,EditorFor需要一个非动态表达式,因此您不能直接使用ViewBag或ViewModel。如果您不想使用正确的视图模型,请将该值分配给变量。

@{ 
    var id = ViewBag.EST_ID; 
} 

@Html.EditorFor(m => id) 

接下来,您不能通过ViewBag将值传递给不同的操作。您不会显示您的创建操作,除非您再次明确指定ViewBag.EST_ID,否则该值将为空。

public ActionResult Create() 
{ 
    ViewBag.EST_ID = est; 
    return View(); 
} 

出版传递vaule到创建通过重定向,你需要使用的查询字符串参数或使用TempData的。

public ActionResult Publication(int id) 
{ 
    string est = ...; 
    // TempData.EST_ID = est; // pass with TempData 

    // or use routeValues passed as query string params 
    return RedirectToAction("Create", "EP", routeValues: new { est = est }); 
} 

public ActionResult Create(string est) 
{ 
    ViewBag.EST_ID = est; 
    // or if set previously 
    // ViewBag.EST_ID = TempData.EST_ID; 
    return View(); 
} 
+0

我也跟着你的答案,但我正在逐渐'System.Data.Entity.DynamicProxies ....'在视图 –

+0

价值,我改变'字符串EST = db.EstimateHeaders.Find(ID)的ToString( );'to'string est = db.EstimateHeaders.Find(id).EST_ID.ToString();'一切都完美无瑕。谢谢!!! –

相关问题