[英]Unable to send back data to action in MVC controller from javascript
我使用jquery將行加載到表中。 每行包含一個ID。
row = '<tr><td><button type="button" class="edit-form btn btn-default" data-form-id="' + value[0].id + '"></button></td></tr>';
tbody.append(row);
單擊按鈕后,我需要將此ID發送回控制器中的操作,然后該控制器將使用該ID重定向到新視圖。 在新頁面上,我將在javascript函數中使用此ID,然后使用jQuery ajax加載與此ID相關的詳細信息。 我無法做到這一點。 我嘗試了幾件事
我經歷了與此相關的其他幾個Stackoverflow問題,並嘗試了所有這些問題。 似乎沒有任何作用。 請提出我應該如何解決這個問題。 任何建議,將不勝感激。 我已將數據發送到控制器中的其他操作,但是現在我的問題是,我需要此ID才能執行該操作,它應將我重定向到新頁面,並在該頁面上提供此信息
對於我嘗試過的事情,我已經粘貼了下面的代碼。
$.each(this.data, function (key, value) {
var row = '<button type="button" class="edit-form btn btn-default" data-form-id="' + value[0].id + '"><span class="glyphicon glyphicon-eye-open"></span></button></td></tr>';
tbody.append(row);
});
單擊此按鈕后,我在javascript中調用以下代碼
openEditForm: function (evt) {
var formId = $(evt.currentTarget).data("formId");
$.ajax({
url: '/Home/Test',
type: "POST",
dataType: "json",
data: JSON.stringify({ formId: formId }),
contentType: "application/json; charset=utf-8;",
success: function (response) {
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
}
在我的控制器中,我有一個名為Test的操作,該操作執行以下操作
public ActionResult Test(string formId)
{
ViewBag.Title = "Testing Page ";
ViewBag.Message = "Testing Page" + formId + "hi";
return View();
}
我想要的是該操作接收此formId並將其重定向到名為Test.cshtml的視圖。 我需要該視圖中包含formId信息,以便我可以在該頁面上使用javascript進行ajax調用以獲取表單信息。
我會做:
選項a)創建一個帶有隱藏字段的表單元素,當用戶單擊按鈕時將其填充,然后將表單提交給您的操作
<form method="post" action="/yourController/yourAction" id="frmAction">
<input type="hidden" name="parameterYouExpectinYourAction" value="" id="hdnField" />
</form>
<script>
$(".btn").on("click", function() {
$("#hdnField").val($(this).data("form-id"));
$("#frmAction").submit();
});
</script>
選項b)創建普通鏈接,而不是像這樣的按鈕
'<a href="/controller/youraction?yourParam=' + value[0].id + '" >link</a>'
這不是最干凈的方法,但是可以幫助您弄清楚如何以其他方式完成它(我希望)。
我看到的最簡單的方法就是按鈕上的事件,該事件重定向到帶有ID的URL。
$('button').on('click', function () {
window.location = 'http://yourURL' + '/' + $(this).attr('data-form-id');
});
只需按照您的需要進行修改即可( Html.Action(...)
, $.post(...)
,...)。
進入控制器后,您可以使用return RedirectToAction(...)
結合提交的ID將用戶重定向到第二個視圖。
Used ajax to send data(id) to the action, but the action ended up returning the html of
the new view as the response instead of redirecting
在行上方,您的意思是說您希望將數據過帳到操作,而Action1將調用另一個Action,該操作將使用返回的ID ...
因此,如果是這種情況,那么為什么要使用Ajax?
function myfunction()
{
var formId = $(evt.currentTarget).data("formId");
// window.location = "ActionNameHere?formId" + formId;
// foryour Case
window.location="Test?formId="+formId;
}
上面的代碼會將您重定向到
public ActionResult Test(string formId)
{
ViewBag.Title = "Testing Page ";
ViewBag.Message = "Testing Page" + formId + "hi";
return View();
}
在這里,您將擁有帶有ID的新頁面...發起HTTP請求的最佳方法是
document.loacation.href.replace('URL')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.