Tob*_*ias 15 .net c# asp.net asp.net-mvc
好的,所以我是整个MVC世界的新手,但它似乎是完成任务的一种非常好的方式,我试图让它在这里工作.
问题是:我无法从我的SQL数据库中的表中获取数据到我的注册页面上的简单下拉表单.
我不知道在哪里放东西,在哪里编写代码打开表,选择ID,在哪里放置response.write以及如何将其发送到视图?
我的模型是这样的:
public class users
{
public string name {get; set;}
public int user_id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器是这样的:
[HttpGet]
public ActionResult ListUser()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
我的观点是这样的:
@model Community.Models.users
Run Code Online (Sandbox Code Playgroud)
我已经用Google搜索了2天,在youtube上观看了几个视频但没有用,我找不到它.请知道这里有一些知识的人吗?请指出一些很好的教程和/或论坛,我可以浏览更多我可能有的问题
这个项目仍然没有运气..
我正在创建一个表单并在该表单中,我想要一个db-loop(IEnumerable)..但是当前的模型不是IEnumerable.我几乎陷入困境,观看了一堆教程,他们都只列出了一个连接,如果我想要两个模型怎么办?
这是我的控制器,我知道你必须将一个列表传递给视图,对吧?
public ActionResult Registration()
{
return View(db.users.ToList());
}
Run Code Online (Sandbox Code Playgroud)
如何在IEnumerable模型中查看我的视图中的列表?
@neoistheone,你的例子对我没什么帮助,我的DB打开像这样:
private DataBaseContext db = new DataBaseContext();
Run Code Online (Sandbox Code Playgroud)
我不知道如何,但它打开了连接.我已经尝试了这么多个小时,它只是愚蠢,没有睡太久!
我习惯编写ASP-Classic fyi,这是我第一次认真尝试升级我对编程最新语言和OOP的知识.
Mik*_*oud 21
添加SelectList到您的模型:
public SelectList DropDownList { get; set; }
Run Code Online (Sandbox Code Playgroud)
为该集合构建类:
public class MyListTable
{
public string Key { get; set; }
public string Display { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在您的控制器中,MyListTable从数据库加载该类的数据:
var list = new List<MyListTable>();
using (SqlConnection c = new SqlConnection(cString))
using (SqlCommand cmd = new SqlCommand("SELECT KeyField, DisplayField FROM Table", c))
{
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
list.Add(new MyListTable
{
Key = rdr.GetString(0),
Display = rdr.GetString(1)
});
}
}
}
var model = new users();
model.DropDownList = new SelectList(list, "Key", "Display");
Run Code Online (Sandbox Code Playgroud)
最后,您需要将模型发送到视图:
return View(model);
Run Code Online (Sandbox Code Playgroud)
现在在剃刀中你可以显示:
@Html.DropDownListFor(m => Model.DropDownList);
Run Code Online (Sandbox Code Playgroud)
你当然可以将这些东西命名为更好的名字,但你明白了.
已经有了很好的答案,但这是另一种方法.
您将user用作模型,ListUserViewModel视图模型和UserController控制器.视图模型的工作是从控制器中携带需要在页面上显示的所有信息,而不会将不需要的属性添加到模型类中.在您的情况下,用户从数据库列表进入下拉列表.
模型:
public class User //By the way use singular when naming a class
{
public string name {get; set;}
public int user_id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
查看模型
public class ListUserViewModel
{
public list<User> Users{get; set;}
}
Run Code Online (Sandbox Code Playgroud)
调节器
public class UserController : Controller
{
private DataBaseContext db = new DataBaseContext();
[HttpGet]
public ActionResult ListUser()
{
var users = db.Users.ToList();
var viewModel = new ListUserViewModel { Users = users };
return View(viewModel);
}
}
Run Code Online (Sandbox Code Playgroud)
现在在视图中使用ListUserViewModel而不是User作为模型
@model Community.Models.ListUserViewModel
Run Code Online (Sandbox Code Playgroud)
和下降
@Html.DropDownListFor(m => m.Users, new SelectList(Model.Users, "user_id", "name"), " ")
Run Code Online (Sandbox Code Playgroud)
说明:
您正在为具有Model.Users选择列表数据源的用户创建下拉列表."user_id"作为所选用户的值和"name"显示标签.最后一个参数(我把空字符串" ")是一个默认值,下拉列表将在选择之前显示.
我希望这会对你或其他人有所帮助.
试试这个,
模型
public string CoutryID { get; set; }
public List<SelectListItem> CountryList { get; set; }
Run Code Online (Sandbox Code Playgroud)
填充列表的控制器方法
public List<Country> getCountryList()
{
using (QRMG_VendorPortalDataContext _context = new QRMG_VendorPortalDataContext())
{
return (from c in _context.Countries
where c.IsDeleted == false
select c).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
在视图中下拉列表
@Html.DropDownListFor(m => m.CoutryID,
new SelectList(Model.CountryList,
"CoutryID", "Value"))
Run Code Online (Sandbox Code Playgroud)
我发现这个系统有效(并且避免使用 ViewBag):
查看型号:
public class YourViewModel
{
// This could be string, int or Guid depending on what you need as the value
public int YourDropdownSelectedValue { get; set; }
public IEnumerable<SelectListItem> YourDropdownList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器:
// Get database values (by whatever selection method is appropriate)
var dbValues = db.YourEntity.ToList();
// Make Selectlist, which is IEnumerable<SelectListItem>
var yourDropdownList = new SelectList(dbValues.Select(item => new SelectListItem
{
Text = item.YourSelectedDbText,
Value = item.YourSelectedDbValue
}).ToList(), "Value", "Text");
// Assign the Selectlist to the View Model
var viewModel = new YourViewModel(){
// Optional: if you want a pre-selected value - remove this for no pre-selected value
YourDropdownSelectedValue = dbValues.FirstOrDefault(),
// The Dropdownlist values
YourDropdownList = yourDropdownList
};
// return View with View Model
return View(viewModel);
Run Code Online (Sandbox Code Playgroud)
并在视图中:
@Html.DropDownListFor(a => a.YourDropdownSelectedValue, Model.YourDropdownList, "select this text - change this to null to exclude", new { @class = "your-class" })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72027 次 |
| 最近记录: |