如何在不对视图执行任何操作的情况下实现从控制器传递数据到视图。
在我的项目中,
事件处理程序将在控制器中引发一个事件,该事件将更改MVC中的视图数据。
我正在寻找答案,我才知道 应该对视图进行一些操作但我不需要它。 EventHandler将引发一个事件,并将数据传递给视图
答案 0 :(得分:1)
你显然想在客户端上发送服务器事件,不是吗?
要实现这一目标,您需要使用SignalR。你可以在这里找到一篇非常好的文章:
答案 1 :(得分:0)
在你的控制器中:
public ActionResult getID()
{
string qry = "SELECT COUNT(JobID) FROM tblDriverJob";
IEnumerable<int> data = db.Database.SqlQuery<int>(qry);
int newFuelID = data.Single() + 1;
string i = Convert.ToString(newFuelID);
return new ContentResult { Content = i };
}
然后在查看
中 <div class="form-group ">
@Html.LabelFor(model => model.JobID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.JobID, new { htmlAttributes = new { @class = "form-control", @Value = @Html.Action("getID"), @readonly = "readonly" } })
@Html.ValidationMessageFor(model => model.JobID, "", new { @class = "text-danger" })
</div>
</div>
这将填充我的查询结果。
注意:这将从我的查询中返回单个值(计数+ 1以获取新的jobID)。也可以使用这种设计(对于下拉列表有一点“跳汰”(我会在视图中返回列表)。
答案 2 :(得分:0)
通常有两种方法可以将值从控制器传递到视图
1)您可以将您的值存储在ViewBag或ViewData中,当您的值像字符串,消息,任何ID等一样简单时,这是最好的,
2)但是如果您的数据类似于搜索查询结果这样的复杂类型,那么您应该创建一个具有属性的模型来存储您的多个值,然后将此模型传递给视图,同时从控制器的操作返回到视图(ig) return(viewname,modelObject)),然后您可以通过在视图顶部定义模型来访问此模型,如@model yourmodelclassname,然后您可以使用“Model”关键字在视图上访问此模型的每个属性