C# 在ASP.NET MVC中执行页面加载操作
我的主页上有一个下拉列表,当页面加载时,我需要绑定到数据源。我有一个页面的基本控制器:C# 在ASP.NET MVC中执行页面加载操作,c#,asp.net-mvc,C#,Asp.net Mvc,我的主页上有一个下拉列表,当页面加载时,我需要绑定到数据源。我有一个页面的基本控制器: public class HomeController : Controller { public ActionResult Index() { return View(); } } 我想在“查看”页面上执行以下操作: <select id="ddlCities"> <% foreach (var item in ViewData.Model
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
我想在“查看”页面上执行以下操作:
<select id="ddlCities">
<% foreach (var item in ViewData.Model.Cities) { %>
<option value='<%= item.CityID %>'><%= item.CityName %></option>
<% } %>
</select>
那么我是否需要修改Index()函数以返回视图模型?我来自网络表单,对它的工作原理有点困惑。你应该看看 您可以为“操作”生命周期的不同状态覆盖
ActionFilterAttribute
类的方法
OnActionExecuting – This method is called before a controller action is executed.
OnActionExecuted – This method is called after a controller action is executed.
OnResultExecuting – This method is called before a controller action result is executed.
OnResultExecuted – This method is called after a controller action result is executed.
史蒂文
你可以做得更简单。只需使用html帮助程序:
<%=Html.DropDownList("ddlCities", ViewData["Cities"])%>
只要你的模型有一个叫做“城市”的ienumerable列表,这个“应该”对你有用
当然,您的“最佳”做法是将强类型模型传递给您的视图,例如:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SubSonic.Web.Models.Country>" %>
(在您的模型中,国家将有一个城市的集合——您得到了大意:)
但上述方法仍然有效。公共类HomeController:Controller
public class HomeController : Controller
{
public ActionResult Index()
{
var cities = <data access code>
return View(cities);
}
}
@ Page Title='' Language='C#' MasterPageFile='~/Views/Shared/Site.Master' Inherits=System.Web.Mvc.ViewPage<IEnumerable<City>>
<select id="ddlCities">
<% foreach (var item in ViewData.Model.Cities) { %>
<option value='<%= item.CityID %>'><%= item.CityName %></option>
<% } %>
</select>
{
公共行动结果索引()
{
var城市=
返回视图(城市);
}
}
@页面标题=''Language='C#'MasterPageFile='~/Views/Shared/Site.Master'Inherits=System.Web.Mvc.ViewPage
但是要小心,因为并不总是调用OnActionExecuted
。是的,也许我的解决方案对他的问题来说有点过分了。我同意Henrik的观点,这可能有点复杂。谢谢你的回答,我不知道动作过滤器。如果我只需要绑定那个下拉列表就行了,但是我还有几个下拉列表,我需要在页面加载时绑定到数据源。抱歉,应该更具体一些。您可以使模型更复杂以保存这些集合,也可以将集合传递给ViewData字典中的视图,如ViewData[“cities”]=。。。ViewData[“国家”]=。。。在视图中,您可以将其转换回foreach(在(IEnumerable)ViewData[“cities”]中的var项),我认为这是我在这里尝试的最佳解决方案。谢谢