【问题标题】:How to: embed @Ajax.ActionLink inside an HTMLselect list option?如何:在 HTMLselect 列表选项中嵌入 @Ajax.ActionLink?
【发布时间】:2012-06-10 18:06:23
【问题描述】:

我正在尝试在 HTML 选择选项中嵌入 Ajax.ActionLink,如下所示

<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"</script>

<select>
    <option>@Ajax.ActionLink("Opiton 1", "MyAction", new { parameter = "parm1" }, 
        new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace,             
        LoadingElementId = "myDiv" })</option>
    <option>@Ajax.ActionLink("Opiton 2", "MyAction", new { parameter = "parm1" }, 
        new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace,             
        LoadingElementId = "myDiv" })</option>
</select>

<div id="myDiv"></div>

动作方法

public ActionResult MyAction(string parameter)
{
    ViewModel myViewModel = new ViewModel();

    myViewModel.Parm = parameter;

    if (Request.IsAjaxRequest())
    {
        return PartialView("_MyPartial", myViewModel);
    }
    else
    {
        return View(myViewModel);
    }
}

当我将Ajax.ActionLink 放在选择列表之外时,它可以正常工作并直接进入 MyAction。当我将链接嵌入到选择列表中的选项中时,onlclick 事件无法触发。

如何让 onclick 事件在 &lt;option&gt;&lt;/option&gt; 内触发?

【问题讨论】:

    标签: c# asp.net-mvc-3 razor asp.net-ajax


    【解决方案1】:

    为什么选择元素内有 2 个操作链接。我猜你想调用一个动作方法并将返回值设置为一个 div。我不会为此使用 Microsoft ajax 库。我会像这样使用 clean code 手动完成。(我只需要在页面中引用 jQuery 库。没有别的)

    //include only jQuery library. Nothing else ! 
    
    <select id="dropDown1">
       <option value="0"> Select</option>
       <option value="1"> Detroit</option>
       <option value="2"> Florida</option>
    </select>
    
    <script type="text/javascript">
     $(function(){
        $("#dropDown1").change(function(){   
           $.get("@Url.Action("MyAction", "MyController")",
                                     { "parameter" : $(this).val()},function(data){
                $("#myDiv").html(data);
            });
        });
     });
    </script>
    

    【讨论】:

    • 感谢您的回答,但您的代码似乎有语法错误。
    • @wayne.blackmon:我明白了。这是一个错字和语法问题。现已修复(已测试。现在没有错误)
    • 再次感谢您的回答。这种技术几乎奏效。不幸的是,观点没有改变。视图代码为
      @Html.Parial("_MyParial")
      。我做错了什么?
    • @wayne.blackmon:我鼓励你写另一个问题,只有相关的细节
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多