如何解决如何使用C#剃刀语法从下拉列表的选定项目访问数据属性
我将如何使用C#剃刀语法将选定项“数据”属性值存储到变量中?我只有一个视图可以使用,没有模型或控制器。
var brokerID = Request["brokerSelect"];
<select class="form-control" id="brokerSelect" name="brokerSelect" title="Please Select a broker" required>
<option value="">- Select Broker -</option>
@foreach (var row in brokers)
{
<option data="@row.ClaimType" value="@row.ID" @(brokerID == row.ID.ToString() ? "selected" : "")>@row.Name</option>
}
</select>
Request [“ brokerSelect”]将返回所选项目的值,但是我需要“ data”属性值。我确实看不起javascript路由,但认为这是不可能的,因为我需要使用此值做更多的事情。
反正有这样做吗?
解决方法
服务器端代码无法访问数据属性值。您将需要使用JavaScript来访问值。您可以将值分配给表单中的隐藏字段,这将确保将其发布到服务器,只要隐藏的输入具有名称属性即可:
<input type="hidden" name="claimtype" />
<select class="form-control" id="brokerSelect" name="brokerSelect" title="Please Select a broker" required>
<option value="">- Select Broker -</option>
@foreach (var row in brokers)
{
<option data-claimtype="@row.ClaimType" value="@row.ID" @(brokerID == row.ID.ToString() ? "selected" : "")>@row.Name</option>
}
</select>
<script>
document.getElementById("brokerSelect").addEventListener('change',function(e){
document.querySelector('[name="claimtype"]').value = e.target.options[e.target.selectedIndex].dataset.claimtype;
});
</script>
顺便说一句,如果您使用的是Razor页面而不是较旧的ASP.NET网页,则不应使用Request["foo"]
访问已发布的值。您应该使用ModelBinding:https://www.learnrazorpages.com/razor-pages/model-binding
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。