Как диалоговое окно регистрации / входа отображается в примере проекта asp.net mvc 4.0 - PullRequest
1 голос
/ 06 декабря 2011

Похоже, это причина появления диалоговых окон модели для регистрации / входа:

<li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink",  data_dialog_title = "Registration" })</li>
        <li>@Html.ActionLink("Log on", "LogOn", "Account", routeValues: null, htmlAttributes: new { id = "logonLink", data_dialog_title = "Identification" })</li>

Когда я повторно использую эти ссылки и слегка изменяю их в соответствии с моими потребностями в отображении диалогового окна создания представления, я всегда встраиваю / показываю свою разметку на веб-странице, но не в диалоге.

Это мой код, который я немного изменил:

<p>    
     @Html.ActionLink("Create News", "Create", "News", routeValues: null, htmlAttributes: new { id = "createLink", data_dialog_title = "Create new News" })
</p>

и это оригинальный код в AccountController:

Чего я не понимаю, так это откуда берется «контент»? В моем действии Создать для моего NewsController я использую тот же код, но содержимое всегда равно нулю, и даже когда я напрямую возвращаю PartialView () по-прежнему не отображается диалоговое окно, вместо этого на веб-странице отображается разметка?

public ActionResult Create()
        {
            string actionName = ControllerContext.RouteData.GetRequiredString("action");
            if (Request.QueryString["content"] != null)
            {
                ViewBag.FormAction = "Json" + actionName;
                return PartialView();
            }
            else
            {
                ViewBag.FormAction = actionName;
                return View();
            }
        }

ПРОСМОТР : Index.cshtml

@model IEnumerable<TBM.WEB.Models.News>

<p>    
     @Html.ActionLink("Create News", "Create", "News", routeValues: null, htmlAttributes: new { id = "createLink", data_dialog_title = "Create new News" })
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Title)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.PublishDate)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Description)
        </th>
        <th></th>
    </tr> 

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.PublishDate)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Description)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}
</table>

ЧАСТИЧНЫЙ ВИД: Create.cshtml

@model TBM.WEB.Models.News

<script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>News</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Title)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Title)
            @Html.ValidationMessageFor(model => model.Title)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.PublishDate)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.PublishDate)
            @Html.ValidationMessageFor(model => model.PublishDate)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Description)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Description)
            @Html.ValidationMessageFor(model => model.Description)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

1 Ответ

1 голос
/ 06 декабря 2011

Полагаю, вам, возможно, потребуется взглянуть на файл AjaxLogin.js в папке Scripts примера проекта. Это потребует некоторой настройки, так как есть список идентификаторов ссылок, которые будут использовать диалог.

...