ASP.NET MVC中替代asp-for获取select选中值及传值问题解决
解决ASP.NET MVC中不用asp-for获取select选中值的方法
服务器端直接获取
去掉asp-for属性,保留name属性(表单提交时的关键标识),后端Action可通过两种方式获取选中值:
修改后的select代码:
<div class="wrapper"> <select id="choose" name="choose" class="form"> <option value="Dog">Dog</option> <option value="Cat">Cat</option> <option value="Bird">Bird</option> <option value="other">Other</option> </select> </div>
后端Action实现:
// 方式1:通过Request.Form直接读取 [HttpPost] public ActionResult Save() { string selectedCategory = Request.Form["choose"]; // 后续业务逻辑 return View(); } // 方式2:利用参数自动绑定 [HttpPost] public ActionResult Save(string choose) { // 参数choose即为select选中的value值 // 后续业务逻辑 return View(); }
客户端JavaScript获取
如果需要在前端(比如表单提交前)获取选中值,直接通过DOM操作实现:
// 获取选中项的value值 let selectedValue = document.getElementById('choose').value; // 获取选中项的显示文本(当value和文本不一致时适用) let selectedText = document.getElementById('choose').options[document.getElementById('choose').selectedIndex].text;
补充说明
你之前使用asp-for="@Model.Category.Name"失效,大概率是手动设置的name="choose"与asp-for自动生成的name属性冲突导致的。若后续需要重新绑定Model,建议仅保留asp-for,不要手动指定name属性。
内容的提问来源于stack exchange,提问作者Mateo_55113
相关产品推荐
相关产品推荐

