以下是我的剃刀观点。我正在从我的控制器通过列表填充我的下拉列表。 我需要发送从下拉列表中选择的项目以将其发送到我的api。
<div id="body">
@model List<Data>
<select>
@foreach(var item in Model)
{
<option value="@item.value" >@item.value</option>
}
</select>
<form id="sendstuff">
@*TODO need to send what was selected in the dropdown here*@
<input class="btn" type="submit" id="createAccount" value="Send Stuff" />
<br/>
<div id="apiresponse"></div>
</form>
</section>
</div>
<script src="/Scripts/jquery-1.9.0.js"></script>
<script type="text/javascript">
$(function () {
$("#sendstuff").submit(function (event) {
event.preventDefault();
var options = {
url: "api/CreateSomeAccount",
type: "POST",
data: $('#sendstuff').serialize()
};
$.ajax(options).done(function (data) {
$("#apiresponse").html(data);
});
return false;
});
});
</script>
Jscript将json post请求发送到web api并从api中获取apiresponse并替换视图的#apiresponse。我想做的是 发送已在下拉列表中选择的选项,并将该选项发送到此json ajax post请求。
这是控制器代码。它是一个json文件并传递&#34; Data&#34;的列表。从文件到视图。
namespace Something.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
using (StreamReader r = new StreamReader(System.IO.File.OpenRead(WebConfigurationManager.AppSettings["JsonFileLocation"])))
{
string jsonData = r.ReadToEnd();
List<Data> testsNamesList = JsonConvert.DeserializeObject<List<Data>>(jsonData);
return View(Data);
}
}
}
}
答案 0 :(得分:0)
试试这个
@using (Html.BeginForm())
{
<select name="dropdownValue">
@foreach (var item in Model)
{
<option value="@item.value">@item.value</option>
}
</select>
<input type="submit" value="submit" />
}
并通过将名为dropdownValue的字符串参数添加到操作方法
来获取值答案 1 :(得分:0)
我用javascript提出了一个解决方案。基本上,当选择下拉列表时,它会使用下拉列表选择填充文本框,当我提交时,文本框中的填充字段将被发送到api。
$('#dropdown').change(function () {
$('#textbox').val($(this).find(":selected").text());
});
这不是理想的解决方案,但如果其他人有更好的解决方案,请随时回答。