MVC从jqueryui对话框模式返回一个值

时间:2014-04-06 11:51:24

标签: jquery asp.net-mvc jquery-ui

我有一个非常简单的对话框,在页面就绪时打开,这是代码

此代码在我看来

$(document).ready(
        //Dialog
        $("#dialog").dialog({
            title: "Dialog box",
            height: 300,
            modal: true,
            open: function(event, ui) {
                $(this).load("@Url.Action("TestDialogView", "Card")");
            }
        })
    );

现在这会打开一个对话模式,其中包含TestDialogView的视图内容。现在我想要做的是在对话框中绘制一个表(我可以在视图中执行此操作),但我想要尝试做的是,当用户单击表中的一个项时,该ID的ID然后将项目发回到我们所在的视图,现在将id传递给我的模型。

步骤示例

  1. 第1步:用户加载CardTypes页面
  2. 步骤2:对话框显示项目列表
  3. 第3步:点击"查看"表格行中的链接
  4. 第4步:该项目的ID将从对话框中回发
  5. 第5步:对话框关闭
  6. 步骤6:CardTypes视图模型中的变量SelectedId现在填充了从对话框中回发的ID。
  7. 干杯

    --- ---更新

    以下是我的对话框的屏幕截图

    enter image description here

    这是呈现它的视图

    @model CardSite.Models.FileSearchModel
    
    @{
        ViewBag.Title = "Attacks";
    }
    
    <table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(x => x.Name)
        </th>
        <th>
            Select
        </th>
    </tr>
    
    @foreach (var item in Model.PokemonFiles)
    {
    <tr>
        <td>
                @Html.DisplayFor(m => item.Name)
        </td>
        <td>
            <a href="">View</a>
        </td>
    </tr>
    }
    
    </table>
    

    在我看来,我需要改变什么?什么应该&#34;观看&#34;一个链接?

1 个答案:

答案 0 :(得分:0)

您需要使用.on()进行事件委派:

var selectedId = '';
$("#dialog").on('click', '.table a', function(){
    selectedId = this.id;
});

或者如果您对第4步有更多解释。


根据您更新的问题,我在桌面上看不到任何ID或任何tr, td or anchor也没有任何ID。
所以现在我已经改变了我的答案:

$("#dialog").on('click', '.table a', function(){
    alert($(this).closest('tr').find('td:first').text());
});

上面的代码会为您提供与点击链接相关的第一个td文本。