在向控制器執行 ajax 請求后,有沒有辦法參考視圖模型的系結物件(來自控制器)?我正在嘗試訪問在用戶更新輸入欄位并單擊“提交”后在 .cshtml 檔案中更新的視圖模型物件的屬性,因此我知道將哪些資料傳遞給外部 API。
amountEur: @Model.AmountEUR我開始使用查詢字串的方式通過 ajax 請求(
索引.cshtml
<h1>Converter</h1>
<div class="row">
<div class="col-md-4">
<form>
<div class="form-group">
Amount in EUR:
@Html.TextBoxFor(m => m.AmountEUR);
@Html.ListBoxFor(x => x.SelectedCurrencyTypes, Model.CurrencyTypes, new { style="width:200px; display:block; margin-top:1vh;" } )
</div>
<button id="convertBtn" class="btn btn-success" type="button">Convert</button>
<p id="data"></p>
</form>
</div>
</div>
@section Scripts{
<script>
$('#convertBtn').click(function () {
var url = "/Home/QueryFixerAPI";
$.get(url, { amountEur: @Model.AmountEUR, }, function (data) {
$("#data").html(data);
});
})
</script>
}
查看模型類:
public class HomeIndexViewModel
{
public float AmountEUR { get; set; }
public List<SelectListItem> CurrencyTypes { get; set; }
public List<string> SelectedCurrencyTypes { get; set; }
public Dictionary<string, float> Rates { get; set; }
}
相關家庭控制器方法:
public ActionResult Index()
{
HomeIndexViewModel homeIndexViewModel = new HomeIndexViewModel
{
SelectedCurrencyTypes = new List<string>(),
CurrencyTypes = GetCurrencyTypes()
};
return View(homeIndexViewModel);
}
public async Task<JsonResult> QueryFixerAPI(float amountEUR)
{
string url = $"{baseUrl}/{DateTime.Now.ToString("yyyy-MM-dd")}?access_key={accessKey}&base=EUR&symbols=USD,CAD,ILS";
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new
MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync();
var serializer = new JavaScriptSerializer();
Root obj = serializer.Deserialize<Root>(data);
return Json(data, JsonRequestBehavior.AllowGet);
}
}
return null;
}
uj5u.com熱心網友回復:
.NET MVC 使用無狀態的 HTTP,因此您無法訪問未傳遞給控制器??的表單資料。您需要在 ajax 請求中包含所需的所有屬性;
var data = {
amountEur: @Model.AmountEUR,
CurrencyTypes:{
...
},
SelectedCurrencyTypes:{
...
},
Rates:{
...
}
};
$.get(url, data, function (data) {
$("#data").html(data);
});
然后在你的控制器中,你指定資料系結到你想要的型別;
public async Task<JsonResult> QueryFixerAPI(HomeIndexViewModel viewModel)
{
var test = viewModel.amountEur;
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/430386.html
標籤:C# jQuery 阿贾克斯 asp.net-mvc
上一篇:我正在嘗試使用序列化表單將陣列作為引數從ajax發送到控制器,但第二個引數“test”給出空值
下一篇:ServiceStack管理界面
