Javascript/jquery үшін MVC көмекшісін құру

Жаңа жоба үшін мен диаграмманы көрсету үшін javascript/jquery жиынтығын қолданамын ( http://www.highcharts.com < a>). Әрбір бет үшін JavaScript коды шамамен бірдей, сондықтан мен оны орталықтандыруға және қайтадан пайдалануға болатын нәрсе жасауға тырыстым. Мен осы бағдарлама үшін ASP.NET MVC пайдаланамын, сондықтан javascript/jQuery кодын ұйымдастырылған түрде шығаратын кейбір параметрлермен серверлік бақылауды жасауды көздедім. Бірақ мен мұны қалай ұқыпты түрде жасайтынына сенімді емеспін. Әрине, мен кетіп, ұзын жолды салып, бетке апара аламын, бірақ бұл өте нәзік көрінеді.

Сондықтан, негізінен, JavaScript бөлігін басқарылатын серверлік бақылауға түрлендіру бойынша ең жақсы тұжырымдар іздеймін. Сондай-ақ, JSON webservices-ге автоматтандырылған деректерді қосу сияқты нәрселерді қосқым келеді.

Жаңарту; Мен диаграмма үшін пайдаланғым келетін үлгіні құрдым. Онда осьтік белгілер, диаграмма атауы және сол сияқты заттар бар.

Қазір менде jQuery коды бар, онда келесідей нәрселер бар:

title: { text: '<%: Model.Title %>' },

әртүрлі диаграмма сипаттарын орнату. Бірақ бұл жақсы тәжірибе емес екенін түсінемін, мен не екенін білмеймін. Жоғарыда келтірілген мысалда, менің үлгіме орнатылған кезде, сипат сипатын қосу сияқты, бірақ ол болмаған кезде оны мүлдем елемейтін нәрселерді жасағым келеді. Мен/else материалдарын қосу арқылы сол жерге жете аламын, бірақ бұл жақсы нәрсені жасамайды. Сондықтан мен jQuery кодын жасаудың орнына сыныпта жасалуы керек нәрсе емес деп ойлаймын.

3

3 жауаптар

MVC DisplayTemplates немесе ішінара көріністер HtmlHelpers қарағанда басқару элементтеріне ұқсас. Егер қосымша деректерді іздестіруді талап етпейтін жай ғана сценарий немесе сол сияқты нәрселер болса, мен @ Html.Partial сілтемесімен ішінара көрініс пен сілтеме қолданамын. Егер қосымша функционалдылық/қауіпсіздік/деректерді іздеу болса, онда мен бала әрекеті (мысалы, ChartController ) және @ Html.Action («ActionName», «Chart» , params) Егер оның үлгісіндегі сипатқа негізделсе, онда мен DisplayTemplate-мен баратын боламын.

Егер оның толығымен клиенттік жағы тек деректер сұрауы бар болса, Мен Маркез ұсынған және белгілі бір .js файлы бар нәрсені міндетті түрде жасайтын болар едім.

1
қосылды

Javascript файлын .js файлына орналастыруды ұсынамын және жай ғана MVC басты көрінісінен, бет көрінісін немесе пайдаланушы басқару көрінісінен сценарийлік тегпен сілтеме жасау керек болды. Javascript файлын бөлек файлға орналастырудың бірнеше артықшылығы бар және ол жақсы тәжірибе болып саналады. Браузердегі JavaScript мазмұнының кэштелуі өнімділікті арттырады және өткізу қабілеттілігін азайтады - javascript-ті firebug немесе кез-келген басқа JavaScript отладчикымен отладтау оңай болады.

1
қосылды
Жақсы, жақсы идея сияқты. Бірақ, мен шығатын деректерді chartcontrols шығаратын деректермен бірге біріктірудің тәсілі қажет. Chartcontrol бірнеше бетке қайта пайдаланылады, сондықтан оны контроллер арқылы теңшеуге болады. Мысалы, y осі пайдаланушылардың саны болатын бетте, мен өзімнің үлгіңізге y осі - бұл пайдаланушылар санының және графада ғана шығатындығын айта аламын. Мен мұны jQuery кодының ішіндегі модельдер арқылы көрсету арқылы жасай аламын, бірақ мен мұнда барудың жолы екеніне сенімді емеспін.
қосылды автор Jasper, көзі

Мен ашық бастапқы мәтіндік MVC Html Helper-мен жұмыс істеп жатырмын Highcharts . Ол әлі де дамып жатыр, бірақ мен нәтижеге қатты ұнайды, сондықтан сен үшін де пайдалы болар деп үміттенемін. Бұл Highcharts MVC-мен не істейтіндігіңізге мысал:

@(
    Html.Highchart("myChart")
        .Title(this.Model.Title)
        .WithSerieType(ChartSerieType.Line)
        .AxisX("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
        .AxisY(this.Model.MyChartAxisTitle)
        .Series(
            new Serie("iPad", new int?[] { 0, 0, 0, 0, 0, 0, 16, 20, 40, 61, 100, 120 }),
            new Serie("MacBook", new int?[] { 616, 713, 641, 543, 145, 641, 134, 673, 467, 859, 456, 120 }),
            new Serie("iPhone", new int?[] { 10, 45, 75, 100, null, 546, 753, 785, 967, 135, 765, 245 })
        ).ToHtmlString()
)
0
қосылды