컨트롤러에서보기로 변수를 전달하는 데 문제가 있습니다. 나는 사용자가 레스토랑 메뉴에 식사를 추가 할 수있는 actionresult를 만들었습니다. 메뉴 세부 정보 페이지에 액세스하려면 HTML 동작 링크에서 menuID가 필요합니다. 그러나 페이지 ViewData["MenuID"]
을 반환하면 menuID에 컨트롤러 작업 결과 값이 있어도 null로 반환됩니다. 컨트롤러에서보기로 데이터를 보내는 다른 방법이 있습니까?컨트롤러에서 ASP.NET으로 데이터를 전달합니다.
당신이 redirecttoaction를 반환하기 때문에 CSHTML 페이지
@model BiteWebsite.Models.MealviewModel
@using BiteWebsite.Models;
@{
ViewBag.Title = "Add Items to Your Menu";
}
<h2>Add Items to Your Menu</h2>
@using (Html.BeginForm())
{
var ID = ViewData["MenuID"];
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.Catergory, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("Catergory", new SelectList(new[] {"Chef Specials","Deserts","Drinks","Main Courses","Sides",
"Starters" ,"Salads"}))
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Description, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Description, new { @cols = "80", @rows = "4" })
@Html.ValidationMessageFor(model => model.Description)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Price, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Price)
@Html.ValidationMessageFor(model => model.Price)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Add Item" class="btn btn-default" />
<div class="btn btn-default">
@Html.ActionLink("View Menu", "Menu", "Details", new { Id = ID })
</div>
</div>
</div>
</div>
}
FWIW, ViewData 및 ViewBag는 동일한 점을 제외하고는 다르게 액세스했습니다. ViewBag에 값 (예 : ViewBag.SomeValue = 1)을 넣고 ViewData (예 : ViewData [ "SomeValue"])를 사용하여 값을 가져올 수 있으며 그 반대의 경우도 마찬가지입니다. –