我想将 index.cshtml 中的EST_ID
分配给使用Html.Editorfor(model=>model.EST_ID)
的 Create.cshtml 视图。
如何通过从index.cshtml中的表中获取EST_ID
,使用TempData或ViewBag将Html.Editorfor(model=>model.EST_ID)
分配给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" } )
如何将 index.cshtml 的EST_ID
值分配给 create.cshtml EditorFor?
答案 0 :(得分: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();
}