如何在ASP.NET中从HTML表单(使用HTML . enumdropdownlistfor)获得值?



我是ASP.NET的新手。我实现了一个接受c#枚举值的表单:

<form method="get">
<div class="form-group">
<label>Curve Name:</label>
@Html.EnumDropDownListFor(x => x.Type, new { @id = "form-control" })
</div>
<div class="form-group">
<label for="valueDate">Value Date:</label>
<input id="date-input" type="date" class="form-control" name="valueDate">
</div>
<button type="button" class="btn btn-default" onclick="display()">Search</button>
</form>

然后在javascript函数中,我想以字符串的形式检索值,但是,我获得的是int。我试图转换结果:

<script type="text/javascript">
function display() {
var type = @(EnumEx)document.getElementById("form-control").value;
}

但是,它不能工作,因为javascript代码在c#中不被识别。

对于初学者来说,你不能像这样把c#和JavaScript混在一起。服务器端代码在服务器上运行,客户端代码在浏览器中运行。两者都发生在完全不同的时间和完全不同的环境。

对于JavaScript,听起来您想要的是所选选项的文本,而不是它的值。正如属性名称所暗示的那样,这将获得值:

var type = document.getElementById("form-control").value;

要获取文本,您可以这样做:

var element = document.getElementById("form-control");
var type = element.options[element.selectedIndex].text;

例如:

var element = document.getElementById("form-control");
element.addEventListener('change', function () {
var type = element.options[element.selectedIndex].text;
console.log(type);
});
<select id="form-control">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>

最新更新