首先,我是html和javascript的新手,所以请放轻松:)
我有一个html表,其中每一行都有一个下拉列表(带有相同的选项)和一个按钮。单击按钮时,我想将下拉列表中所选项目的文本与另一个字符串一起传递给控制器。
到目前为止我已经
了 <table>
<tr>
<td>First name</td>
<td>Surname</td>
</tr>
@foreach (var row in Model.Rows)
{
<tr>
<td>@row.FirstName</td>
<td>
<select id="surnames">
@foreach (var name in Model.Surnames)
{
<option value=@name.ToString()>@name.ToString()</option>
}
</select>
</td>
<td><input type="button" id="myButton" value="Go" onclick="location.href='@Url.Action("MyAction", "MyController", new { @firstName = row.FirstName, @newSurname = ??? })'" /></td>
</tr>
}
</table>
<script>
function getSelectedVersion() {
var version = document.getElementById("surnames").text;
}
</script>
显然,这是我的代码的修剪和修改版本。实际上,我在模型的每一行中都有更多属性。
根据我的理解,我目前有一个ID问题,因为对于所有行,我对select具有相同的id。除了为每一行添加一个脚本之外,我想不出这个方法,它会起作用(我认为)但是不够优雅(表格的每一行中的foreach,然后表格之外的一个标签来分配脚本到每一行的下拉列表)
最重要的是,我错过了调用我的脚本获取文本的位,然后在按钮单击时将其传递给控制器。
理想情况下,我想将整个行对象传递给控制器,但我现在有一个解决方法,只需要字符串firstName。
模型中只有一个Names集合(而不是模型中每一行中的一个)用于表中的每一行,因为每个表的选项始终相同。
答案 0 :(得分:1)
在html代码的顶部包含jQuery
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
然后在代码的底部添加以下代码:
<script>
$("input[type=button]").on("click", function(){
var FIRSTNAME = ($(this).parent().prev().prev()).html();
//alert(FIRSTNAME);
var NEWSURNAME = ($(this).parent().prev().children().attr("selected", "selected")).val();
//alert(NEWSURNAME);
$.post("/MyController/MyAction", { firstName: FIRSTNAME, newSurname: NEWSURNAME } );
});
</script>
答案 1 :(得分:0)
可能是这样的吗?
def letProb( c ):
""" if c is an alphabetic character,
we return its monogram probability (for english),
otherwise we return 1.0 We ignore capitalization.
Adapted from
http://www.math.cornell.edu/~mec/2003-2004/cryptography/subs/frequencies.html
"""
if c == 'e' or c == 'E': return 0.1202
if c == 't' or c == 'T': return 0.0910
if c == 'a' or c == 'A': return 0.0812
if c == 'o' or c == 'O': return 0.0768
if c == 'i' or c == 'I': return 0.0731
if c == 'n' or c == 'N': return 0.0695
if c == 's' or c == 'S': return 0.0628
if c == 'r' or c == 'R': return 0.0602
if c == 'h' or c == 'H': return 0.0592
if c == 'd' or c == 'D': return 0.0432
if c == 'l' or c == 'L': return 0.0398
if c == 'u' or c == 'U': return 0.0288
if c == 'c' or c == 'C': return 0.0271
if c == 'm' or c == 'M': return 0.0261
if c == 'f' or c == 'F': return 0.0230
if c == 'y' or c == 'Y': return 0.0211
if c == 'w' or c == 'W': return 0.0209
if c == 'g' or c == 'G': return 0.0203
if c == 'p' or c == 'P': return 0.0182
if c == 'b' or c == 'B': return 0.0149
if c == 'v' or c == 'V': return 0.0111
if c == 'k' or c == 'K': return 0.0069
if c == 'x' or c == 'X': return 0.0017
if c == 'q' or c == 'Q': return 0.0011
if c == 'j' or c == 'J': return 0.0010
if c == 'z' or c == 'Z': return 0.0007
return 1.0