0

我希望实现以下目标:

我有 2 个视图,1 个部分视图和 1 个索引。

在索引中,我有一个循环遍历模型列表并将每个项目传递给局部视图。

现在,对于该模型列表中的每个项目,我希望能够使用模态对话框。即,对于用户帖子列表,每个帖子上都有一个买入或卖出按钮。所有这些都使用相同的 div/modal。有什么方法可以从该模式对话框中检索一个文本框值,特别是对于我点击了“立即购买”按钮的对话框?

代码:

指数:

 @model IEnumerable<BRApplication.Models.MarketPost> 

 @{
     foreach (var m in Model) {
             if (m.IsBuy) {
                 <li>
                         @Html.Partial("BuyPost_Partial", m) 
                 </li>
             } 
     }
 }

并且BuyPost_Partial有这个:

 <div id="mdlEmail" class="none">
     Please enter an email the owner of this book can contact you with. <br/>
      @Html.TextBox("txtRespondantEmail", "", new { id = "txtRespondantEmail" })
 </div>

我希望能够获得txtRespondantEmail文本框的值。

关于如何使每个帖子的此文本框独一无二的任何想法?如果我将 ID 附加到它,我也不知道如何访问它。

o 用于模态的 JS(我已将其放在 Index.cshtml 文件中)

         function EmailDialog() {
            // alert("email");
             $("#mdlEmail").dialog({
                 height: 200,
                 width: 500,
                 modal: true,
                 buttons: {
                     "Confirm": function () {
                         MailNow();
                         $(this).dialog("close");
                     }
                 }
             });
         }

在 MailNow() 函数中,我尝试使用这行 jQuery 访问文本框值:

 var RespondantEmail = $("#txtRespondantEmail").val();

立即购买处理程序:

   $(function () {
             $("#btnBuyNow").click(function () {
                 var email = $("#email").text();
                 alert(email);
                 if (email) {
                     EmailDialog();
                 } else {
                     FacebookLink();
                 }
             });
         });

文本框位于EmailDialog().

4

2 回答 2

3

由于您正在迭代Model,我假设您的部分将多次出现。因此,您不应分配id='txtRespondantEmail'给文本框,因为这id意味着您只有一个这样的元素。让它成为一个类:class='txtRespondantEmail'你也需要一个。您还需要文本框上的一些唯一标识符。你MarketPost有身份证吗?如果是这样,请将属性 id 放在其上:id='txtRespondantEmail-'@Model.Id

然后你就可以得到你的价值:

var val = $('#txtRespondantEmail-1').val();

更新

问你为什么需要这个值会更合适?您可能想在该文本框中输入内容时调用服务器?如果是这种情况,请在文本框旁边创建一个按钮。给它上课,说:'btn-save'。然后对服务器进行 ajax 调用,您将在其中保存如下值:

$(document).on('click', '.btn-save', function(){
    var val = $(this).siblings('.txtRespondantEmail').val();
    $.ajax({
        url: '/controllername/actionname/',
        type: 'POST'
        data: new { text: val },
        success: function(data){
            alert('done');
        }
    });
})
于 2013-04-02T22:38:33.587 回答
0

我不知道您的模型是什么样的,但是您传递给局部视图的模型中是否有任何东西是唯一的,以便您可以将其附加到文本框的 id 上。

例如,您有类似 m.ID 的东西,您可以尝试

@Html.TextBox("txtRespondantEmail", "", new { id = "txtRespondantEmail" + m.ID })

我现在没有 VS,所以我无法测试这个,但你可以试一试。

$('[id^="txtRespondantEmail"]') - 这将返回所有以 'txtRespondantEmail' 开头的文本框

于 2013-04-02T22:34:40.353 回答