0

私はWebフォームのバックグラウンドを持っていますが、この時点でMVC4にかなり不満を感じています。私は例を見たり、ビデオを見たり、グーグルしたりしています。何も機能していないようで、タオルを投げようとしていますが、このサイトは非常に役立つので、これについて何か助けが得られるかどうかを確認します。

私がしたいのは:

  1. jQueryタブ(easytabs)を使用してページを作成します(これはところで行われます)
  2. タブクリックイベントで、ajaxを介してタブを再ロードしたいのですが

Webフォームでは、これで午前8時に完了します。私は今これとその午後5時に立ち往生しています。信じられないほどイライラした。

私はMVC4サイトのWebビデオチュートリアルに従いました。この素敵な例はRazorにあり、使用したくありませんが、知識のためにとにかくそれに従います。

http://www.asp.net/mvc/overview/javascript->'Javascript
とAjax'-
> http://pluralsight.com/training/players/PSODPlayer?author=scott-allen&name=mvc3-building-ajax&mode= live&clip = 0&course = aspdotnet-mvc3-intro

イージータブのHTMLでは、htmlを次のように定義します。

<li class="tab"><a href="#tabs-users" class="light heavy">Manage Sections</a></li>

そこで、ビデオに続いて、このHTMLを置き換えるために、ajaxヘルパーを介してajax属性を使用してタグを作成してアンカーしようとしました。

 <% Ajax.ActionLink("Manage Sections", "tabsUsers", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "tabs-users", InsertionMode = InsertionMode.Replace }); %>

これは何もレンダリングしません。ページには表示されません。だから、私は狩りに行きます、そして私は以下が必要であることがわかります:

<%: Scripts.Render("~/bundles/jqueryval") %>

このバンドルには「jquery.unobtrusive-ajax.min.js」が含まれており、web.configにも次の設定があります。

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

まだ何もありません。

元のHTML

<div id="tab-container" class="tab-container">
    <ul class="etabs">
        <li class="tab upper first"><a href="#tabs-users" class="light heavy">Manage Users</a></li>
        <li class="tab upper"><a href="#tabs-groups" class="light heavy">Manage Sections</a></li>
    </ul>
    <div id="tabs-users" class="normal light clearfix">
        Users
    </div>
    <div id="tabs-groups" class="normal light clearfix">
        Groups
    </div>
</div>

Ajax.ActionLinkはそこにアンカータグをレンダリングするのが好きではないと感じていますが、理由はわかりません。

コントローラ

    [HttpGet]
    public PartialViewResult tabsUsers()
    {
        IEnumerable<SelectListItem> items = UserManager.GetUsers()
            .Select(c => new SelectListItem
            {
                Value = c.UserID.ToString(),
                Text = c.FirstName + c.LastName
            });

        return PartialView("UsersPartial", items);
    }

UsersPartial View

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<LMS.Data.User>>" %>

<table>
    <tr>
        <th>
            <%: Html.DisplayNameFor(model => model.UserName) %>
        </th>
        <th>
            <%: Html.DisplayNameFor(model => model.FirstName) %>
        </th>
        <th>
            <%: Html.DisplayNameFor(model => model.LastName) %>
        </th>
        <th>
            <%: Html.DisplayNameFor(model => model.Password) %>
        </th>
        <th>
            <%: Html.DisplayNameFor(model => model.Email) %>
        </th>
        <th></th>
    </tr>

<% foreach (var item in Model) { %>
    <tr>
        <td>
            <%: Html.DisplayFor(modelItem => item.UserName) %>
        </td>
        <td>
            <%: Html.DisplayFor(modelItem => item.FirstName) %>
        </td>
        <td>
            <%: Html.DisplayFor(modelItem => item.LastName) %>
        </td>
        <td>
            <%: Html.DisplayFor(modelItem => item.Password) %>
        </td>
        <td>
            <%: Html.DisplayFor(modelItem => item.Email) %>
        </td>
        <td>
            <%: Html.ActionLink("Edit", "Edit", new { id=item.UserID }) %> |
            <%: Html.ActionLink("Details", "Details", new { id=item.UserID }) %> |
            <%: Html.ActionLink("Delete", "Delete", new { id=item.UserID }) %>
        </td>
    </tr>
<% } %>

</table>

実行時にレンダリングされるスクリプトセクション

        <script src="/Scripts/jquery-1.6.2.js" type="text/javascript"></script>

        <script src="/Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>

        <script src="/Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script>

        <script src="/Scripts/jquery.easytabs.min.js" type="text/javascript"></script>
<script src="/Scripts/script.js" type="text/javascript"></script>

何か案は??ここでMVCに価値のあるショットを提供したいのですが、それは私にとってあまり良いことではありません。

4

1 に答える 1

2

これは何もレンダリングしません。ページには表示されません。

これは、正しい構文が次のとおりであるためです。

<%= Ajax.ActionLink("Manage Sections", "tabsUsers", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "tabs-users", InsertionMode = InsertionMode.Replace }) %>

WebForms の長年のユーザーは、午前 8 時に物事を終了するので、<%=は結果を応答に出力するために使用されるのに対し<%;は最後に何も出力せずにサーバー上でコマンドを実行するだけであることを知っておく必要があります。

于 2012-09-11T21:06:19.840 に答える