我有一个Controller,它在返回View之前执行检查,以防止有人尝试删除客户端(如果它们链接到另一个表)。如果链接存在,我的列表中会包含一些项目。
控制器:
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeleteConfirmed(int id)
{
//First check if the ClientID is linked to an environment
List<Models.Environment> tempEnv = db.EnvironmentsRepo.Find(x => x.ClientID == id).ToList();
if(tempEnv.Count > 0)
return View("~/ClientsAdmin/Delete.cshtml", tempEnv);
}
查看:
@model TNT_Client.Models.Client
@{
ViewBag.Title = "Delete";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Delete Client</h2>
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>Selected Client</h4>
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
</dl>
</div>
我正在返回tempEnv变量和我的视图,有没有办法可以从我的视图中访问该变量?例如,可以将其分配到ViewBag.Title
和Layout
变量所在的位置?
答案 0 :(得分:0)
您可以在表单中创建一个隐藏字段,以便在用户单击“提交按钮”
时将其发送到服务器类似
<input type="hidden" name="tempEnv"/>
然后在你的控制器中
public async Task<ActionResult> DeleteConfirmed(int id, string tempEnv)
更新:
如果要在视图中使用它,您只需使用ViewBag属性即可。
控制器中的
List<Models.Environment> tempEnv = db.EnvironmentsRepo.Find(x => x.ClientID == id).ToList();
ViewBag.TempEnv = tempEnv;
在您的视图中
@if (ViewBag.TempEnv.Count > 0)
{
...
}
答案 1 :(得分:0)
在您的控制器中,您可以添加ViewBag.tempEnv = tempEnv.Count
。
然后在您查看ViewBag.Title的视图中,您可以var tempEnv = @ViewBag.tempEnv