![](/img/trans.png)
[英]How to pass Id to my API request from a selected dropdown in Angular 6?
[英]how to pass id of selected dropdown in knockout function
這是我在淘汰賽中的簡單功能。 您可以在最后一行看到以下數據:ko.toJson(post)
self.addPost = function () {
var post = new Post();
post.Message(self.newMessage());
return $.ajax({
url: postApiUrl,
dataType: "json",
contentType: "application/json",
cache: false,
type: 'POST',
data: ko.toJSON(post)
})
.done(function (result) {
self.posts.splice(0, 0, new Post(result));
self.newMessage('');
})
.fail(function () {
error('unable to add post');
});
}
現在,與此同時,我想通過下拉列表選擇ID,如下所示
data: { id: $("#Locations").val() }
現在,請告訴我如何將這兩者合並為一個,以便我可以將消息以及所選的下拉列表ID發布到controller中 。這是我的controller:
public JsonResult PostPost(Post post, int? id)
{
post.PostedBy = User.Identity.GetUserId<int>();
post.NeighbourhoodId = id;
db.Posts.Add(post);
db.SaveChanges();
var usr = db.Users.FirstOrDefault(x => x.Id == post.PostedBy);
var ret = new
{
Message = post.Message,
PostedBy = post.PostedBy,
NeighbourhoodId = post.NeighbourhoodId
};
return Json( ret,JsonRequestBehavior.AllowGet);
}
在我的查看頁面上,這是我觸發addPost函數的單擊事件的按鈕
<input type="button" data-url="/Wall/SavePost" value="Share" data-bind="click: addPost">
與此相關的是,發送ID的下拉列表如下所示:
@Html.DropDownList("Locations", ViewBag.NeighbourhoodId as SelectList, "Select a location", )
<script type="text/javascript">
$(document).ready(function () {
$("#Locations").change(function ()
{
var locationSelected = $("#Locations").val();
var url = '@Url.Action("PostPost", "Post")';
$.post(url, { id: locationSelected },
function (data)
{
});
});
});
</script>
在此視圖頁面上,我對此表示懷疑:
1>在單擊按鈕時,我正在調用addPost函數並成功綁定textarea消息。但是,現在,在下拉選擇中,我應該像這樣調用相同的addPost函數:
@Html.DropDownList("Locations", ViewBag.NeighbourhoodId as SelectList, "Select a location", new { data_bind = "event: { change: addPost}" })
我只想保存所選下拉列表的ID,並在輸入類型按鈕單擊時將其發送到控制器,並將其發送到文本區域。 我刪除了一些代碼以減少問題的長度。 請幫幫我。
這應該可以解決您的第一個問題:
self.addPost = function () {
var post = new Post();
post.Message(self.newMessage());
return $.ajax({
url: postApiUrl,
dataType: "json",
contentType: "application/json",
cache: false,
type: 'POST',
data: { post: ko.toJSON(post), id: $("#Locations").val() }
});
關於第二個問題,您不應在用戶每次更改下拉列表的值時發布控制器。 我認為這沒有道理。 因此, 刪除 #Locations
的“更改”功能:
$("#Locations").change(function () {
var locationSelected = $("#Locations").val();
var url = '@Url.Action("PostPost", "Post")';
$.post(url, { id: locationSelected }, function (data) {
});
});
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.