Javascript 如何从Html助手类调用Java脚本函数';脚本函数?

Javascript 如何从Html助手类调用Java脚本函数';脚本函数?,javascript,asp.net-mvc,razor,jqgrid,html-helper,Javascript,Asp.net Mvc,Razor,Jqgrid,Html Helper,我有一个razor视图,其中有一个名为getDocumentDetails的函数。我已经编写了一个html助手类,如下所示 public static MvcHtmlString CreateJQGrid<T>(this HtmlHelper helper, GridViewModel<T> model) { bool blnEditIcon = false; bool blnEditRights = false;

我有一个razor视图,其中有一个名为getDocumentDetails的函数。我已经编写了一个html助手类,如下所示

     public static MvcHtmlString CreateJQGrid<T>(this HtmlHelper helper, GridViewModel<T> model)
    {
        bool blnEditIcon = false;
        bool blnEditRights = false;
        var htmlBuilder = new StringBuilder();

        // Place the Upload Button.
        if ((!string.IsNullOrEmpty(model.UploadAction) || !string.IsNullOrEmpty(model.AddNewAction)) && model.UserAccessRights != Constants.UserType.View)
        {
            htmlBuilder.AppendFormat(@"<div align='right' class='icon-list'>");
            if (!string.IsNullOrEmpty(model.UploadAction) && model.UserAccessRights != Constants.UserType.Checker && model.UploadRights == true)
            {
                htmlBuilder.AppendFormat(@"<a class=""upload"" href=""{0}"" id=""Upload"">Upload &nbsp;&nbsp; </a>", model.UploadAction);
            }
            // Place the Add New Button
            if (!string.IsNullOrEmpty(model.AddNewAction) && model.UserAccessRights != Constants.UserType.Checker)
            {
                htmlBuilder.AppendFormat(@"<a class=""addnew"" href=""{0}"" id=""AddNew"">Add New</a>", model.AddNewAction);
            }
            htmlBuilder.AppendFormat(@" </div><br /><br />");
        }
        htmlBuilder.AppendFormat(@"<div align='right' class='icon-list'>");

        if (!model.BulkApprovalRights)
            model.multiselectCheckBox = false;

        htmlBuilder.AppendFormat(@"</div>");


        htmlBuilder.AppendFormat(@"<table id=""{0}"" class=""scroll"" cellpadding=""0"" cellspacing=""0""></table>", model.Id);
        htmlBuilder.AppendFormat(@"<div id=""{0}Pager"" class=""scroll"" style=""text-align:center;""></div>", model.Id);

        htmlBuilder.AppendFormat(@"<script type=""text/javascript"">");

        htmlBuilder.AppendFormat(@" function EditingValidation(id) {{
                                           var selr = $('#{0}').jqGrid('getGridParam','selrow'); 
                                           var rowData = $('#{0}').getRowData(selr);
                                            if(rowData.Edit=='') 
                                            {{
                                                alert('You cannot edit the     selected record.'); return [false, ''];
                                            }}
                                          return [true, ''];                                       
   Rejected
                                }}", model.Id);
        //Md Aslam
        htmlBuilder.AppendFormat(@" function addLinkk(cellvalue, options,          
   rowObject) {{
                                          alert('AddLinkk');
                                return  '<a href=""#""  onclick=GridCellClick(""'+cellvalue+'"")><font color=""blue""><u>'+cellvalue+'</u></font></a>';

                                }}", model.Id);

        htmlBuilder.AppendFormat(@" function GridCellClick(cellValue) {{

                                        getDocumentDetails(); }}", model.Id);


        htmlBuilder.AppendFormat(@"function highlight (cellValue, options, 
  rowObject) {{ 
            if(cellValue=='Approved')               
                return '<span class=""label-
successforecolor"">'+cellValue+'</span>';
            else if(cellValue=='Rejected')               
                           return '<span class=""label-
  dangerforecolor"">'+cellValue+'</span>';
            else if(cellValue=='Pending')               
                           return '<span class=""label-infoforecolor"">'+cellValue+'</span>';
            else
                return cellValue;
                        }}");

        htmlBuilder.AppendFormat(@"$(function()");
        htmlBuilder.AppendFormat(@"{{");
        htmlBuilder.AppendFormat(@"var lastsel;");
        htmlBuilder.AppendFormat(@"$('#{0}').jqGrid({{", model.Id);
        htmlBuilder.AppendFormat(@"url: '{0}',", WebExtensions.GetUrlContent() + model.Url);
        //htmlBuilder.AppendFormat(@"editurl: '/InwardOutward/Edit',");
        if (!string.IsNullOrEmpty(model.EditUrl))
            htmlBuilder.AppendFormat(@"editurl: '{0}',", WebExtensions.GetUrlContent() + model.EditUrl);
        htmlBuilder.AppendFormat(@"datatype: 'json',");
        htmlBuilder.AppendFormat(@"mtype: 'POST',height:280,");
        //Create Columns Names
        htmlBuilder.AppendFormat(@"colNames: [");
        foreach (var action in model.Actions)
        {
            htmlBuilder.AppendFormat(@"'{0}',", action.Name.ToString());
        }
        foreach (var column in model.Columns)
        {
            htmlBuilder.AppendFormat(@"'{0}',", column.Name.ToString());
        }
        htmlBuilder.AppendFormat(@"],");

        //Create Columns
        htmlBuilder.AppendFormat(@"colModel: [");

        foreach (var column in model.Columns.OrderBy(x => x.ActionOrder))
        {
            if (column.Name.ToUpper() == "REMARKS")
            {
                htmlBuilder.AppendFormat(@"{{name: '{0}', 
                                        index: '{1}', 
                                        align: '{2}', 
                                        search: {3},                                            
                                        sortable: {4},
                                        width: {5},                                             
                                        hidden: {6},
                                        sorttype: '{7}',
                                        sortable: true,
                                        searchoptions: {{sopt:[{8}]}},
                                        editable: {9},
                                        hidedlg: {10},
                                        edittype:'{11}',                                          
                                        editrules: {{custom: true, custom_func: EditingValidation}},
                                        classes: 'textInDiv',
                                        formatter: function (v) {{return '<div>' + $.jgrid.htmlEncode(v) + '</div>';}}
                        ", column.Index.ToString()
                      , column.Index
                      , column.Align == null ? "left" : column.Align.ToLower()
                      , column.IsSearch.ToString().ToLower()
                      , column.IsSortable.ToString().ToLower()
                      , column.Width > 0 ? column.Width : 100
                      , column.IsHidden.ToString().ToLower()
                      , column.SortType == null ? "string" : column.SortType.ToString().ToLower()
                      , column.SearchOptions == null ? "'eq','bw','bn','cn','nc','ew','en'" : column.SearchOptions.ToString().ToLower()
                      , column.IsEditable.ToString().ToLower()
                      , column.IsEditHidden.ToString().ToLower()
                      , column.IsEditTypeSelect == true ? "select" : "text"
                      );
            }
            else
            {
                htmlBuilder.AppendFormat(@"{{name: '{0}', 
                                        index: '{1}', 
                                        align: '{2}', 
                                        search: {3},                                            
                                        sortable: {4},
                                        width: {5},                                             
                                        hidden: {6},
                                        sorttype: '{7}',
                                        sortable: true,
                                        searchoptions: {{sopt:[{8}]}},
                                        editable: {9},
                                        hidedlg: {10},
                                        edittype:'{11}',                                          
                                        editrules: {{custom: true, 
   custom_func: EditingValidation}}"
                   , column.Index.ToString()
                   , column.Index
                   , column.Align == null ? "left" : column.Align.ToLower()
                   , column.IsSearch.ToString().ToLower()
                   , column.IsSortable.ToString().ToLower()
                   , column.Width > 0 ? column.Width : 100
                   , column.IsHidden.ToString().ToLower()
                   , column.SortType == null ? "string" : 
 column.SortType.ToString().ToLower()

                   , column.SearchOptions == null ? 
     "'eq','bw','bn','cn','nc','ew','en'" : 
      column.SearchOptions.ToString().ToLower()
                   , column.IsEditable.ToString().ToLower()
                   , column.IsEditHidden.ToString().ToLower()
                   , column.IsEditTypeSelect == true ? "select" : "text"
                   );
            }
            if (column.Index == "Status")
                htmlBuilder.AppendFormat(@",formatter:highlight
                                            }},");
            else
                htmlBuilder.AppendFormat(@"}},");
            if (column.IsEditable && !blnEditRights && 
  !string.IsNullOrEmpty(model.EditUrl))
                blnEditIcon = true;
        }
        htmlBuilder.AppendFormat(@"],");

        htmlBuilder.AppendFormat(@"loadtext: 'Loading {0}',", 
 model.Caption);
        htmlBuilder.AppendFormat(@"pager: jQuery('#{0}Pager'),", model.Id);
        htmlBuilder.AppendFormat(@" rowNum: 20,
                                    rowList: [10, 20, 30, 40, 50, 60, 70, 
  80, 90, 100, 200,500,1000,100000000],  
                                    loadonce: true,                                          
                                    ignoreCase: true,
                                    viewrecords: true,                                        
                                        ");

        //htmlBuilder.AppendFormat(@"multiSort: true,");                                   


        htmlBuilder.AppendFormat(@"caption: '{0}',", model.Caption);


        htmlBuilder.AppendFormat(@"pagepos: 'left',
                                   forceFit: true,
                                   autowidth: true,
                                   shrinkToFit: false,");
        htmlBuilder.AppendFormat(@"}});");

        htmlBuilder.AppendLine(@"");
        htmlBuilder.AppendLine(@"");
        htmlBuilder.AppendFormat(@"$('#{0}').jqGrid(", model.Id);
        htmlBuilder.AppendFormat(@"'navGrid', '#{0}Pager',{{ search: true, 
   add: false, edit: true, del: false, refresh: false, searchtext: 
  'Search',edittext: 'Edit',position: 'left'                                            
                                        ,", model.Id);

        if (blnEditIcon)
        {
            htmlBuilder.AppendFormat(@"edit: true, edittext: 'Edit'");
            //afterSubmit:function(response, postdata){{ alert('Coming');       
  var json   = response.responseText;var result = JSON.parse(json);return 
  [result.status,result.message,null];    }}
        }
        else
        {
            htmlBuilder.AppendFormat(@"edit: false,");
        }

        htmlBuilder.AppendFormat(@"
                                    }},");

        htmlBuilder.AppendFormat(@" {{ 
 afterSubmit:function(response, postdata){{  

 if(response.status == 200)
{{ 
$('.topinfo').html('<div   
          style=\'color:red\'>'+response.responseText+'</div>');

 var tinfoel = $('.tinfo').show();
  //tinfoel.delay(1500).fadeOut();
  return [true,''];
 }} else {{
  return [false,'error message'];
 }}
  }},
 onclickPgButtons:function(){{
 $('.topinfo').html('<div style=\'color:green\'> &nbsp;&nbsp;&nbsp;</div>');
}}

 }},
                                     {{}},
                                     {{}},
                                    {{multipleSearch:true,  
   multipleGroup:true, showQuery: true,closeAfterSearch: true,searchOnEnter:          
    true}}");
        htmlBuilder.AppendFormat(@");");

        /* Add this line to include a separator between buttons */
        SeparatorBetweenButtons(model.Id, htmlBuilder);

        //Enable the Refresh
        htmlBuilder.AppendLine(@"");
        htmlBuilder.AppendLine(@"");
        htmlBuilder.AppendFormat(@"$('#{0}').jqGrid('navButtonAdd', '#{1}Pager', {{", model.Id, model.Id);
        htmlBuilder.AppendFormat(@"caption: 'Refresh',");
        htmlBuilder.AppendFormat(@"buttonicon: 'ui-icon-refresh',
                                    title: 'Refresh',");
        htmlBuilder.AppendFormat(@"onClickButton: function () {{");
        htmlBuilder.AppendFormat(@"$('#{0}').setGridParam({{ datatype:      
     'json' }});", model.Id);

        htmlBuilder.AppendFormat(@"$('#{0}')[0].clearToolbar();", model.Id);
        htmlBuilder.AppendFormat(@"$('#{0}').trigger('reloadGrid');", 
    model.Id);
        htmlBuilder.AppendFormat(@"}}");
        htmlBuilder.AppendFormat(@"}});");

        SeparatorBetweenButtons(model.Id, htmlBuilder);
        htmlBuilder.AppendLine(@"");
        htmlBuilder.AppendLine(@"");
        htmlBuilder.AppendFormat(@"$('#{0}').jqGrid('filterToolbar', {{ 
 searchOperators: true, defaultSearch:'cn' }});", model.Id);

        htmlBuilder.AppendFormat(@"  }}); ");
        htmlBuilder.AppendFormat(@"</script>");

        return MvcHtmlString.Create(htmlBuilder.ToString());

    }
public static MvcHtmlString CreateJQGrid(此HtmlHelper助手,GridViewModel模型)
{
bool-blnEditIcon=false;
bool blnEditRights=false;
var htmlBuilder=新的StringBuilder();
//放置上传按钮。
if((!string.IsNullOrEmpty(model.UploadAction)| |!string.IsNullOrEmpty(model.AddNewAction))&&model.UserAccessRights!=Constants.UserType.View)
{
htmlBuilder.AppendFormat(@“”);
如果(!string.IsNullOrEmpty(model.UploadAction)&&model.UserAccessRights!=Constants.UserType.Checker&&model.UploadRights==true)
{
htmlBuilder.AppendFormat(@“”,model.UploadAction);
}
//放置“添加新”按钮
如果(!string.IsNullOrEmpty(model.AddNewAction)&&model.UserAccessRights!=Constants.UserType.Checker)
{
htmlBuilder.AppendFormat(@“”,model.AddNewAction);
}
htmlBuilder.AppendFormat(@“

”); } htmlBuilder.AppendFormat(@“”); 如果(!model.BulkApprovalRights) model.multiselectCheckBox=false; htmlBuilder.AppendFormat(@“”); htmlBuilder.AppendFormat(@“”,model.Id); htmlBuilder.AppendFormat(@“”,model.Id); htmlBuilder.AppendFormat(@“”); htmlBuilder.AppendFormat(@“函数编辑验证(id)){{ var selr=$('#{0}').jqGrid('getGridParam','selrow'); var rowData=$('#{0}').getRowData(selr); if(rowData.Edit=='') {{ 警报('您无法编辑所选记录');返回[假',]; }} 返回[true',]; 拒绝 }}“,model.Id); //阿斯拉姆博士 htmlBuilder.AppendFormat(@“函数addLinkk(单元格值、选项、, 行对象){{ 警报(“AddLinkk”); 返回“”; }}“,model.Id); htmlBuilder.AppendFormat(@)函数GridCellClick(cellValue){{ getDocumentDetails();}}”,model.Id); htmlBuilder.AppendFormat(@)函数高亮显示(单元格值、选项、, 行对象){{ 如果(cellValue=='Approved') 返回“”+单元格值+“”; else if(cellValue=='Rejected') 返回“”+单元格值+“”; else if(cellValue=='Pending') 返回“”+单元格值+“”; 其他的 返回单元格值; }}"); AppendFormat(@“$(function()”); AppendFormat(@“{”); AppendFormat(@“var lastsel;”); htmlBuilder.AppendFormat(@“$('{0}')).jqGrid({{”,model.Id); AppendFormat(@“url:'{0}',”,WebExtensions.GetUrlContent()+model.url); //htmlBuilder.AppendFormat(@“editurl:”/inwardoutput/Edit“,”); 如果(!string.IsNullOrEmpty(model.EditUrl)) AppendFormat(@“editurl:'{0}',”,WebExtensions.GetUrlContent()+model.editurl); AppendFormat(@“数据类型:'json',”); AppendFormat(@“mtype:'POST',高度:280,”); //创建列名称 AppendFormat(@“colNames:[”); foreach(model.Actions中的var操作) { htmlBuilder.AppendFormat(@“{0}”,action.Name.ToString()); } foreach(model.Columns中的var列) { AppendFormat(@“{0}”,column.Name.ToString()); } htmlBuilder.AppendFormat(@“,”); //创建列 AppendFormat(@“colModel:[”); foreach(model.Columns.OrderBy(x=>x.ActionOrder)中的var列) { if(column.Name.ToUpper()=“备注”) { htmlBuilder.AppendFormat(@“{{name:'{0}”, 索引:{1}, 对齐:“{2}”, 搜索:{3}, 可排序:{4}, 宽度:{5}, 隐藏:{6}, sorttype:“{7}”, 可排序:是的, 搜索选项:{{sopt:[{8}]}, 可编辑:{9}, hidedlg:{10}, edittype:“{11}”, editrules:{{custom:true,custom_func:EditingValidation}, 类:“textInDiv”, 格式化程序:函数(v){{return'+$.jgrid.htmlEncode(v)+'';} ,column.Index.ToString() ,column.Index ,column.Align==null?“left”:column.Align.ToLower() ,column.IsSearch.ToString().ToLower()列 ,column.IsSortable.ToString().ToLower() ,列宽>0?列宽:100 ,column.ishiden.ToString().ToLower()列 ,栏
  @using Intranet.Common;
   @using CSR.UI.Web.Helpers;
   @using CSR.Model;
  @using Intranet.Utilities;
 @model CorpGroupModel
 @{

  ViewBag.Title = "AddEditCorpGroup";
//Layout = "~/Views/Shared/_Layout.cshtml";
 }

 <div class="panel panel-default">
<div class="panel-heading">
    <h3 class="panel-title">
        Manage Corporate Group </h3>
</div>
<div class="panel-body">

    <br />
    @Html.CreateJQGrid(Model.GridData)
</div>
   </div>

   <br/>

<div class="panel panel-default">
   <div class="panel-heading">
      <h3 class="panel-title">
          Add / Edit Corporate Group</h3>
   </div>
   <div class="panel-body">
    <div class="icon-list">
        @Html.ActionLink("Back to List", "ManageCorpGroup", null, new { @id     
   = "BackToList", @class = "backbtn" })
    </div>
    </br>
        @using (Html.BeginForm(Constants.Action.AddEditCorpGroup,       
   Constants.Controller.CorpGroup, FormMethod.Post, new { @role = "form" }))
    {

        @Html.AntiForgeryToken()          
        @Html.HiddenFor(m => m.IsAdd)
        @Html.HiddenFor(m => m.Id)
        @Html.HiddenFor(m => m.CompanyId);
        @Html.HiddenFor(m => m.Status);         
        @Html.HiddenFor(m => m.CreateUser);                                              
        @Html.HiddenFor(m => m.CreateDate);
        @Html.HiddenFor(m => m.IsUserLoggedIn);
        @Html.HiddenFor(m => m.LoggedInUserSeq);
        @Html.HiddenFor(m => m.UserAccessRights); 
        @Html.HiddenFor(m => m.IsMakerRemarks)
        @Html.HiddenFor(m => m.IsCheckerRemarks) 

        <div class="row">
            <div class="col-md-4">
                <label for="" class="control-label">
                    Corporate Group Name </label><br />
                @Html.TextBoxFor(model => model.CorpGroupName, new { @class 
   = "form-control mand", @onkeypress = "return OnlyAlphaNumeric(this);", 
 @onkeyup = "return CPOnlyAlphaNumeric(this);" }).DisableIf(() => 
  Model.IsReadOnly == true)
            </div>
             <div class="col-md-4">
                <label for="" class="control-label">
                    Corporate Group Name </label><br />
                @Html.TextBoxFor(model => model.ManagingDirector, new { 
  @class = "form-control mand", @onkeypress = "return 
 OnlyAlphaNumeric(this);", @onkeyup = "return CPOnlyAlphaNumeric(this);" 
 }).DisableIf(() => Model.IsReadOnly == true)

            </div>
             <div class="col-md-4">
                <label for="" class="control-label">
                    Address1 </label><br />
                @Html.TextBoxFor(model => model.Address1, new { @class = 
 "form-control mand", @onkeypress = "return OnlyAlphaNumeric(this);", 
 @onkeyup = "return CPOnlyAlphaNumeric(this);" }).DisableIf(() => 
  Model.IsReadOnly == true)
            </div>
             <div class="col-md-4">
                <label for="" class="control-label">
                   Address2 </label><br />
                @Html.TextBoxFor(model => model.Address2, new { @class = 
 "form-control", @onkeypress = "return OnlyAlphaNumeric(this);", @onkeyup = 
 "return CPOnlyAlphaNumeric(this);" }).DisableIf(() => Model.IsReadOnly == 
  true)
            </div>
             <div class="col-md-4">
                <label for="" class="control-label">
                    Address3 </label><br />
                @Html.TextBoxFor(model => model.Address3, new { @class = 
 "form-control", @onkeypress = "return OnlyAlphaNumeric(this);", @onkeyup = 
 "return CPOnlyAlphaNumeric(this);" }).DisableIf(() => Model.IsReadOnly == 
  true)
            </div>
             <div class="col-md-4">
                <label for="" class="control-label">
                    Address4 </label><br />
                @Html.TextBoxFor(model => model.Address4, new { @class = 
 "form-control", @onkeypress = "return OnlyAlphaNumeric(this);", @onkeyup = 
 "return CPOnlyAlphaNumeric(this);" }).DisableIf(() => Model.IsReadOnly == 
 true)
            </div>
        </div>





        }       
   </div>
 </div>

<script type="text/javascript">

   // Start of  Hide Reset button in edit mode 


       var model = @Html.Raw(Json.Encode(Model))

     $(document).ready(function () {


  function getDocumentDetails()
   {

       alert("2");
   }

     });

  </script>