简体   繁体   English

ASP.NET MVC ActionLink和javascript函数

[英]ASP.NET MVC ActionLink whith javascript function

I have a list with action links. 我有一个包含动作链接的列表。 All links must load a partial view by param in modal popup. 所有链接都必须通过模态弹出窗口中的param加载局部视图。

Links: 链接:

@model IEnumerable<string>

<ul>
    @foreach (var item in Model)
    {
        <li>
            @Html.ActionLink(item, "MyAction", null, new {code = item}, new {@class = "myclass" })
        </li>
    }
</ul>

MyAction: MyAction:

public ActionResult MyAction(string code)
{
    // logic
    var model = ...

    return PartialView("_MyPartialView", model);
}

My view with modal popup and javascript function: 我的模态弹出和javascript函数的视图:

<script type="text/javascript">     
$(function() {
    $(function() {
        $('#my-dialog').dialog({
            autoOpen: false,
            width: 400,
            modal: true
        });

        $('.myclass').click(function (e) {
            e.preventDefault();
            $('#my-dialog').load(this.href, function () {
                $(this).dialog('open');
            });
            return false;
        });
    });
</script>    
<div id="my-dialog"></div>

But js function on click actionlink does not work and partial view just load in new page. 但是单击actionlink上的js函数不起作用,而部分视图只是在新页面中加载。 I try to make break point in this function, but break point does not work, what means that function did not call by click event. 我尝试在这个函数中设置断点,但是断点不起作用,这意味着该函数没有通过click事件调用。 Thanks for advice 谢谢你的建议

Try this....... 尝试这个.......

<script type="text/javascript">     
$(function() {
    $(function() {
        $('#my-dialog').dialog({
            autoOpen: false,
            width: 400,
            modal: true
        });

          $(body).on('click','.myclass',function(e){       
            e.preventDefault();
            $('#my-dialog').load(this.href, function () {
                $(this).dialog('open');
            });
            return false;
        });
    });
</script>    
<div id="my-dialog"></div>

Once your view is rendered the only way to load a partial view is via an Ajax call which returns the partial view to your popup 渲染视图后,加载局部视图的唯一方法是通过Ajax调用将部分视图返回到弹出窗口

HTML HTML

@model IEnumerable<string>

<ul>
@foreach (var item in Model)
{
    <li>
       <a onclick="showModal('@item')" class="myclass">item</a>
    </li>
}

<div id="my-dialog"></div>

Jquery jQuery的

<script type="text/javascript">     
$(function() {
    $('#my-dialog').dialog({
        autoOpen: false,
        width: 400,
        modal: true
    });

 function showModal(code) {
        $.ajax({
            url: "myController/MyAction?code="+code,
            type: 'get',
            success: function (result) {
                $('#my-dialog').html(result);
                $('#my-dialog').dialog('open')
            },
            }
        });
    }
</script>  

Action: 行动:

public ActionResult MyAction(string code)
{
// logic
var model = ...

return PartialView("_MyPartialView", model);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM