2009-07-27 53 views
1

我將以稍微不同的方式重新提出這個問題。Json和多個部分視圖

假設我在頁面上有2個或更多的[相同的]局部視圖。

在此PartialView上有一個文本框和一個按鈕。

點擊按鈕我需要採取文本框的內容並做一個Json回發,做一些東西,並返回一個結果集。

我遇到的問題是,我可以使這一切都發生在第一次PartialView但不適用於任何後續的。

事件附加到每個按鈕,但是當我嘗試訪問文本框時,我似乎只看到第一個文本框,而不是按鈕處於PartialView中的那個文本框。

在下面的代碼中,我有部分視圖兩次。所以兩個文本框和按鈕的實例。

Json代碼附加到每個提交按鈕,但是當我訪問文本框時,我只能從第一個局部視圖中獲取文本。

部分代碼;

管窺:

<%= Html.TextArea("MyTextBox", Model.Text, 3, 50, new { onkeyDown="return CheckInputLength(this)" })%> 
<input id="submitText" name="submitText" type="submit" value="Add text" class="clsTest" /> 

一些JSON的代碼:

$(document).ready(function() { 
    $(".clsTest").each(
function() { 

    $(this).unbind("click").click(function(evt) { 
var commentText = jQuery.trim($("#MyTextBox").val()); 

回答

1

好了,問題是你有一個以上的textarea的具有相同ID(MyTextBox)。確保你的textareas有不同的ID。

<%= Html.TextArea("MyTextBox", Model.Text, 3, 50, 
    new { onkeyDown="return CheckInputLength(this)", 
    id = "textBox-" + Model.ID })%> 

那麼,我的建議是,你有一個JS函數,該函數的文本區域的ID作爲參數:

function postComment(id) { 
    var commentText = jQuery.trim($(id).val()); 
} 

,有你的提交按鈕調用該函數:

<input id="submitText" name="submitText" type="submit" value="Add text" 
    class="clsTest" onclick="postComment('textBox-<%=Model.ID%>')" /> 
+0

謝謝çağdaş。今晚會嘗試。知道它必須是非常簡單的東西。 – griegs 2009-07-28 02:48:50