2011-11-03 85 views
0

很容易將表單提交給控制器中的強制類型化文本框的操作方法,例如使用提交按鈕,但是如果我想發送完全相同的形式與強類型的文本框通過jquery也許是$ .ajax調用後點擊其他東西。在asp.net mvc中通過jquery傳遞強類型表單模型數據

這樣的代碼:

@Html.TextBoxFor(m => m.topTenFav.YoutubeLink,new { id="youTubeLinkTxt"}) 

完成所有的工作對我們來說,這是非常簡單的控制器

[HttpPost] 
public ActionResult AddTopTenFav(HomeViewModel topTen) 
{ 
    topTen.topTenFav.Date = DateTime.Now; 
    topTen.topTenFav.UserName = User.Identity.Name; 
    repository.AddTopTen(topTen); 
    repository.Save(); 
    return RedirectToAction("Index"); 
} 

我們的對象的屬性映射如何將派遣這種形式的控制器,將表單中的文本框映射到對象的屬性上,如點擊事件,如

$("#btnAddGenre").click(function() {} 

@using (Html.BeginForm(
     "AddTopTenFav", "Home", FormMethod.Post, new { id = "AddTopTenFavForm" })) 
{ 

    <span id="youTubeLinkSpan">Youtube Link</span> 
    <div> 
     @Html.TextBoxFor(m => m.topTenFav.YoutubeLink,new { id="youTubeLinkTxt"}) 
    </div> 
    <span id="youTubeNameSpan">Song Title</span> 
    <div> 
     @Html.TextBoxFor(m => m.topTenFav.Title,new { id="youTubeNameTxt"}) 
    </div> 

    <button type="submit" name="btnSubmit" value="">submit</button> 
} 
+0

爲什麼你要在一個匿名函數內觸發點擊事件的窗體? – Joakim

+0

在更詳細地回顧您的代碼之後,我注意到您剛忘記關閉click函數,關於能夠執行ajax調用,asp.net mvc有一個幫助器Ajax.BeginForm,這樣您就可以使用內置的支持如果你這麼請。 – Joakim

回答

1

你可以做以下職位:

$(document).ready(function(){ 
    $('#btnAddGenre').click(function() { 
     $.post(
      $('#AddTopTenFavForm').attr('action'), 
      $('#AddTopTenFavForm').serialize, 
      function (data) { 
       window.location = @Url.Action("Index"); 
      }, 
      'html' // returned data type 
     ); 
    }); 
}); 

我使用的HTML數據類型,這樣就可以返回任何你想要的,並使用@Url.Action給位置發生在window.location重定向。

如有它的工作標誌爲接受的答案

+0

它不工作或我做錯了 –

+0

你把JavaScript放在你的視圖裏。我已經改變了一點。再試一次,告訴我發生了什麼事。 –

0

是的,你可以發佈使用jQuery強類型textboxex的數據。 首先你必須做 採用下面的代碼取jQuery中所有textboxex的值。

  var xx= $("#xx").val(); 

這將在您的mvc文本框中給出xx中的val值。 然後通過使用jquery ajax調用你可以調用操作方法。下面的代碼是 。

$.get("/XXXX/YY/1", { xxName: xx }, function (data) { 
        var status = data; 
        alert(status); 
        if (status) { 
         return true; 
        } 
        else { 
         alert("The book with this name is already present. TRY DIFFERENT NAME!") 
         return false; 
        } 
       }); 

這裏xxxx是控制器的AMD yy是操作方法name.the一個參數是所有要發送作爲參數文本框的值。 這將執行ajax調用並返回值。

請告訴我,如果你發現任何問題,我會給整個代碼。

+0

不錯的解決方案。你假設他從控制器返回true,並手動創建你想通過獲取請求傳遞的所有參數。 –

+1

不,我認爲他正在用剃刀工作在MVC3中,那麼我認爲他可以理解他需要得到或發佈的內容。所以他可以操縱它。他的要求。因爲我錯誤地複製並粘貼了jquery代碼,所以我忘記將其更改爲帖子。 而對於參數,您可以在jQuery中使用參數,並可以使用此過程輕鬆發送post方法中的值。 你可以試試這個方法,因爲它很容易 並感謝提醒我爲我的錯誤 感謝 – user1006544

+0

抱歉沒有回答,但這真正地沒有爲我工作。我發現了一個有效的解決方案,以MZ問題$。員額( 「/首頁/ AddTopTenFav」,$( 「#AddTopTenFavForm」)序列化()函數(JSON){// 處理響應 }, 「JSON」); –

相關問題