2010-07-19 7 views
6

mvc 사용자 정의 컨트롤에서 form.ascx 전화, 나는 "세부 정보"라는 div에 포함 된 Telerik 그리드 있습니다. 페이지라는 edit.aspx에서jquery UI 대화와 함께 telerik 그리드 사용!

나는 다음 썼다 :

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <div id="details"> 
     <%Html.RenderPartial("form", Model != null ? Model.CurrentEntity : null); %> 
    </div> 
    <script type="text/javascript" language="javascript"> 
     $(document).ready(function() { 
      $('#details').dialog(
      { modal: true, 
       title: "add", 
       width: 815, 
       buttons: { 
        'save': function() { $("form:first").trigger("submit"); }, 
        'close': function() { $(this).dialog('close'); } 
       } 
      }); 
     }); 
    </script> 
</asp:Content> 

문제가 표시되지 않습니다 대화입니다! 그리고 대화 상자를 사용하지 않는 것처럼 사용자 정의 컨트롤이 마스터 페이지 내에 표시됩니다.

"양식"사용자 정의 컨트롤 내에서 격자를 사용하지 않으면 모든 것이 잘 작동하고 대화 상자가 올바르게 표시됩니다. 문제를 파악하기 위해 방화 광을 사용했을 때 다음 오류가 표시되었습니다.

$는 정의되지 않았습니다 ????

어떤 몸이라도 아이디어가 있습니까 ?? 여기

는 마스터 페이지입니다 :

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 
    <%@ Import Namespace="Telerik.Web.Mvc.UI" %> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
    <head> 
     <link type="text/css" href="../../Content/Site.css" rel="stylesheet" /> 
     <link type="text/css" href="../../content/css/start/jquery-ui-1.8.2.custom.css" rel="Stylesheet" /> 
     <script type="text/javascript" src="/Scripts/jquery-1.4.2.js"></script> 
     <script type="text/javascript" src="/Scripts/jquery-ui-1.8.2.custom.js"></script> 
    <%--<script type="text/javascript" src="../../Scripts/Jquery.Validate.js"></script>--%> 
     <%--<script type="text/javascript" src="../../Scripts/MicrosoftMvcJQueryValidation.js"></script>--%> 
     <title> 
      <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
     </title> 
    </head> 
    <body> 
    <%= Html.Telerik().StyleSheetRegistrar() 
     .DefaultGroup(group => group.Add("telerik.common.css") 
            .Add("telerik.outlook.css")) 
<!----- some html content only -----> 

     <div id="maincontent" class="fixed"> 
      <asp:ContentPlaceHolder ID="MainContent" runat="server"> 
      </asp:ContentPlaceHolder> 
     </div> 

    <asp:ContentPlaceHolder runat="server" ID="Footer" /> 
    <% Html.Telerik().ScriptRegistrar().DefaultGroup(group => { group.Add("telerik.examples.js").Compress(true); }). 
      OnDocumentReady(() => 
      { %>prettyPrint();<% }).Render(); %> 
</body> 
</html> 

여기 부분보기 form.acsx입니다 :

난 다음 스크립트 파일을 사용할 : 내가 문제를 파악

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Bereau.Core.IncommingCorrespondence>" %> 
<%@ Import Namespace="System.Web.Mvc.Html" %> 
<%@ Import Namespace="BureauModule.Utility" %> 
<%@ Import Namespace="Telerik.Web.Mvc.UI" %> 
<%--<%= Html.ValidationSummaryJQuery("Error must be fixed.", new Dictionary<string, object> { { "id", "valSumId" } })%>--%> 
<%--<% Html.EnableClientValidation(); %>--%> 
<% using (Html.BeginForm()) 
    { %> 
<%=Html.DisplayFor (c=>c.Photocopy) %> 
<%--<% ViewContext.FormContext.ValidationSummaryId = "valSumId"; %>--%> 
<form action="" method="post" id="customer_form" dir="rtl"> 
<div class="editor-label"> 
    <%:Html.LabelFor(c => c.Overstatment)%> 
    <%=Html.TextBoxFor(c => c.Overstatment,new { @class ="text ui-widget-content ui-corner-all"})%> 
    <%--<%= Html.ValidationMessageFor(model => model.Overstatment,"*") %>--%> 
</div> 
<div> 
    <label for="CorrespondenceNumber">CorrespondenceNumber:</label> 
    <%=Html.TextBoxFor(c => c.CorrespondenceNumber, new { @class = "text ui-widget-content ui-corner-all" })%> 
    <span> 
     <%--<%= Html.ValidationMessageFor(model => model.CorrespondenceNumber, "*")%>--%></span> 
</div> 
<div> 
    <label for="Nature">Nature:</label> 
    <%=Html.DropDownList("Nature")%> 
    <%--<%= Html.ValidationMessageFor(model => model.Nature, "*")%>--%> 
</div> 
<div> 
    <label for="Sender">Sender:</label> 
    <%=Html.DropDownList("Sender")%> 
    <%--<%= Html.ValidationMessageFor(model => model.Sender, "*")%>--%> 
</div> 
<div class="correspondenceReceiver"> 
    <% Html.Telerik().Grid<Bereau.Core.CorrespondenceDetail>(Model != null ? Model.Details : null) 
     .Name("Grid") 
     .DataKeys(keys => keys.Add(c => c.CorrespondenceDetailID)) 
     .HtmlAttributes(new { @class = "t-grid-rtl" }) 
     .Columns(columns => 
     { 
      columns.Bound(c => c.CorrespondenceDetailID).Visible(false); 
      columns.Bound(c => c.Sender).Title("Sender"); 
      columns.Bound(c => c.Count).Title("Count"); 
      columns.Bound(c => c.Date).Title("Date").Format("{0:yyyy/MM/dd}"); 
      columns.Bound(c => c.Notes).Title("Notes"); 
      columns.Command(c => c.Edit()); 
     }) 
     .ToolBar(t => t.Insert()) 
     .DataBinding 
     (c => c.Ajax() 
      .Select("Select", "IncommingCorespondence") 
      .Insert("InsertDetail", "IncommingCorespondence") 
      .Update("UpdateDetail", "IncommingCorespondence") 
      ) 
     .Scrollable() 
     .Sortable() 
     .Pageable() 
     .Render(); 
    %> 
    <% Html.Telerik().ScriptRegistrar().OnDocumentReady(() => 
     { 
    %> 
    $('.insert-button').click(function(e) { e.preventDefault(); $('#Grid').data('tGrid').createRow(); 
    }); 
    <% }); %> 
</div> 
<input type="submit" runat="server" /> 
<% } %> 
</form> 
+0

정보를 더 게시 할 수 있습니까? 마스터 페이지와 부분보기가 도움이 될 것입니다. –

+0

안녕하세요 korchev, 답장을 보내 주셔서 감사합니다. 질문을 수정하고 더 많은 정보를 추가했습니다. –

답변

2

(해당 상황에서 이미 사용 중지됨) :

<%--<script type="text/javascript" src="../../Scripts/Jquery.Validate.js"></script>--%> 
<%--<script type="text/javascript" src="../../Scripts/MicrosoftMvcJQueryValidation.js">/script>--%> 
나는이 문제를 해결 않았다 방법을 모르는

<% Html.Telerik().ScriptRegistrar(); %> 

% Html.Telerik().ScriptRegistrar().DefaultGroup(group => { group.Add("telerik.examples.js").Compress(true); }). 
      OnDocumentReady(() => 
      { %>prettyPrint();<% }).Render(); %> 

:

번과 10 번은 다음의 코드를 변경했습니다.

저는 JavaScript로 전문가가 아닙니다.

13

Telerik ScriptRegistrar을 사용하면 기본적으로 페이지 하단에 jQuery에 대한 링크가 출력됩니다. 페이지에 jQuery가 필요한 코드가 "상위"인 경우 (코드 예제에서와 같이) 페이지에 jQuery를 수동으로 추가하는 경우에는 다음과 같이 ScriptRegistrar의 비헤이비어를 비활성화 할 수 있습니다.

또한 "telerik.examples.js"또는 "prettyPrint();"이 필요하지 않습니다. 코드를 실제로 사용하지 않는 한 이러한 리소스는 Telerik 데모에서 사용되지만 일반적으로 다른 웹 사이트에서는 사용되지 않습니다.

위와 같이 ScriptRegistrar를 업데이트 한 다음 문제없이 jQuery 유효성 검사 스크립트를 다시 사용할 수 있어야합니다. 당신이 ScriptRegistrar 압축을 사용하려는 경우

최종 참고로, 당신은 당신의 Web.config의 자산 HttpHandler를 등록해야합니다

<add verb="GET,HEAD" path="asset.axd" validate="false" type="Telerik.Web.Mvc.WebAssetHttpHandler, Telerik.Web.Mvc"/> 

자세한 내용은 available in the online docs이다.

+0

감사합니다. Todd, 네 말이 맞아. –

관련 문제