程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使 Html.Action 参数动态化?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使 Html.Action 参数动态化??

开发过程中遇到如何使 Html.Action 参数动态化?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使 Html.Action 参数动态化?的解决方法建议,希望对你解决如何使 Html.Action 参数动态化?有所启发或帮助;

我使用的是 ASP.NET MVC。我有一个动作,我调用它来获取局部视图。我正在使用 @HTMl.Action() 以获得局部视图。它工作正常,但仅适用于 ID=533。假设当用户单击网格按钮时,我们可以调用 JavaScript 函数。从该函数如何将 ID 和 tab 值传递给 HTMl.Action() 并检索部分视图 HTML/Js。仅供参 - 部分视图的 JavaScript 也必须工作。

<div ng-controller="submissionDashboardController">
    @HTMl.Action("Submissionheader","Submission",new { ID = 533,tab = 0 })
</div>

@using (HTMl.requiredScripts())
{
    @HTMl.requirePageScript("Shared","Shortcutlinks")
    @HTMl.requirePageScript("Submission","ListSubmissionDashboard")
    @HTMl.requirePageScript("Shared","GrIDPersonalization")
    @HTMl.requirePageScript("Shared","SubmissionCreation")
}

这是提交控制器中的提交标题操作。

[ChildActionOnly]
        public ActionResult Submissionheader(int? ID,SubmissionTabEnum tab = SubmissionTabEnum.NonE)
        {
            // More logic and code here...

            TemPDAta["SubmissionheaderID"] = ID;
            return PartialVIEw("_Submissionheader",model);
        }

附加注释/代码:这是用最新的 HTML 响应替换 div 的 JavaScript AJAX 调用。这种方法的问题与部分视图相关联的 java 脚本不起作用,任何从 HTML 响应触发的事件都不起作用。

正在被 HTML AJAX 调用响应替换的 div。

<div ID="comment"></div>

这里是调用AJAX传递动态参数的JavaScript函数-

<script>

function displayCommentDialog(SubmissionID) {
        
        // AJAX Call for Dynamic Parameters and HTML partial vIEw response
        $.AJAX({
            type: 'POST',dataType: 'HTML',url: '/Submission/Submissionheader',async: false,data: { ID: SubmissionID,tab: 0 },success: function (result) {
                commentdiv = result;
                $("#comment").HTML(commentdiv);
            },error: function (XMLhttprequest,textStatus,errorThrown) {
            }
        });
    }
</script>

解决方法

我假设您正在尝试替换控制器中的 id,然后将其传递给局部视图。如果是这样,你可以做这样的事情。替换

@Html.Action("SubmissionHeader","Submission",new { id = 533,tab = 0 })

例如:

<button class="btn btn-secondary" type="button" onclick="DisplayCommentDialog()">Press here</button>

你的局部视图中创建隐藏字段 [Id] 与从控制器传递的值

@Html.Hidden("Id",@id)

最后在你的脚本中

<script>

var id = 533; // replace with initial values from model if nesesery
var tab = 0;

function DisplayCommentDialog() {
        
        // Ajax Call for Dynamic Parameters and html partial view response
        $.ajax({
            type: 'POST',dataType: 'html',url: '/Submission/SubmissionHeader',async: false,data: { id: id,tab: tab },success: function (result) {
                commentDiv = result;
                $("#comment").html(commentDiv);
                id = $($.parseHTML(result)).filter('#Id').val(); // set new id value from result
            },error: function (XMLhttprequest,textStatus,errorThrown) {
            }
        });
    }
</script>

编辑

如果您将按钮动态加载到 DOM,您必须将事件附加到文档而不是特定元素。

$(document).on('click','#your_button_id',function(){
   // desired function here
})
,

最后我可以通过修改我的方法来解决这个问题。

这是我遵循的 -

  1. 我像以前一样保留了评论 div。

    @H_450_75@
  2. 我更新了这个 Div 进行了 ajax 调用,就像我在页面加载时所做的那样并动态传递参数 -

    function DisplayCommentDialog(id,tab) {
            
            // Ajax Call for Dynamic Parameters and html partial view response
            $.ajax({
                type: 'POST',errorThrown) {
                }
            });
        }
    
    @H_450_75@
  3. 这将解决动态变量的问题,更新的内容将显示在 DIV 中,因为我替换了 DIV id 和选项卡值。但请注意,这不会解决 onclick 或 onload 或任何 on 事件的任何问题。即使您使 js 文件可用,它们也会在 div 更新后死亡。为了解决这个问题,我必须重新绑定所有动态数据,在我的情况下,通过调用 ajax 重新绑定下拉值并重新绑定下拉列表 - 像这样。

    >     <script>
    >         function DisplayCommentDialog(EntityOrganizationID) {
    >             var categories = $("#commentrecipients").kendoDropDownList({
    >                 optionLabel: "SELEct Recipients...",>                 dataTextField: "Name",>                 dataValueField: "UserID",>                 height: 310,>                 Width: "900px",>                 datasource: {
    >                     transport: {
    >                         read: function (options) {
    >                             $.ajax({
    >                                 url: "/Submission/SecurityGroupsUsersAccessRight",>                                 dataType: "JSON",// "jsonp" is required for cross-domain requests; use "json" for same-domain
    > requests
    >                                 data: {
    >                                     id: EntityOrganizationID
    >                                 },>                                 success: function (result) {
    >                                     // notify the data source that the request succeeded
    >                                     options.success(result);
    >                                 },>                                 error: function (result) {
    >                                     // notify the data source that the request failed
    >                                     options.error(result);
    >                                 }
    >                             });
    >                         }
    >                     }
    >                 }
    >             }).data("kendoDropDownList");
    >         }
    >     </script>
    
    @H_450_75@

大佬总结

以上是大佬教程为你收集整理的如何使 Html.Action 参数动态化?全部内容,希望文章能够帮你解决如何使 Html.Action 参数动态化?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:如何使