从 Html.DropDownListFor() ASP.NET 调用操作
本文关键字:NET 调用 操作 ASP Html DropDownListFor | 更新日期: 2023-09-27 18:33:43
我有一个下拉列表,需要触发一个 Url.Action 与已单击的 id 值
目前我有:型
using System.Collections.Generic;
using System.Data.Entity;
using System.Web.Mvc;
namespace Portal.Models
{
public class CompanyViewModel
{
public int Id { get; set; }
public string CompanyName { get; set; }
public IEnumerable<SelectListItem> CompaniesList { get; set; }
}
public class CompanyViewModelDbContext : DbContext
{
public DbSet<CompanyViewModel> Contacts { get; set; }
}
}
视图
@model Portal.Models.CompanyViewModel
@{
ViewBag.Title = "ShowDropdown";
}
@Html.DropDownListFor(m => m.Id, new SelectList(ViewBag.CompanyList as System.Collections.IEnumerable, "CoId","CompanyName"), Url.Action("SelectCompany", "Home", new { partnerCoId = "CoId" }, null))
控制器方法
public PartialViewResult ShowDropdown()
{
var coid = Lt.GetThisUsersCoId();
var model = new CompanyViewModel();
using (var dc = new CompanyViewModelDbContext())
{
var content =
(from cr in db.CompanyRelationship
//This is grabbing all related companies to the logged in user
join c in db.Companies on cr.CoId equals c.CoId
where cr.PartnerCoId == coid
select new
{
cr.CoId,
c.CompanyName
}).Distinct().ToList();
ViewBag.CompanyList = content;
foreach (var item in content)
{
model.Id = item.CoId;
model.CompanyName = item.CompanyName;
}
}
return PartialView(model);
}
public ActionResult SelectCompany(int partnerCoId, string redirect)
{//Bunch of code that I didn't write but just needs to be triggered on click
下拉列表应根据全局值列出一堆公司,选择一家后,它将建立关系。
我正在尝试完成的:根据从下拉列表中选择的内容触发操作结果选择公司。 目前它似乎没有做任何事情,我应该在 VS 中使用任何好的调试工具来查看单击下拉列表时会发生什么。 从我的前端来看,当我选择一家公司时,似乎什么也没发生。
更新我已经将脚本调用输入到我的视图中,但在使用@url时遇到问题。从它内部的操作,我必须传递这个:
@Url.Action("SelectCompany", "Home", new {partnerCoId = x})
从下拉列表中选择的值。
您可以使用
JQuery Change()
下拉列表的事件。
实现此目的的最简单方法是:
将以下代码放在视图中:
@Html.DropDownListFor(m => Model.Id, new SelectList(ViewBag.CompanyList as System.Collections.IEnumerable,"Select", new { @id = "dropdwonId" })%>
<script>
$("#dropdwonId").change(function() { // This will fire when the dropdown value will get changed
var url = "YourUrl/" + $(this).val(); //Append Id To URL
window.location.replace(url);
});
</script>