Визуализация в модале - PullRequest
       10

Визуализация в модале

0 голосов
/ 18 января 2019

Я пытаюсь сделать вид в модальном виде, но не могу понять, как это сделать.

Я попробовал обходной путь, создав частичное представление, но не смог вызвать метод в домашнем контроллере (в форме загрузки).

Мне было интересно, возможно ли иметь частичное представление, запускающее метод в контроллере, или я должен изменить его на случайное представление (которое мне не удалось показать)?

вид:

@model IEnumerable<CharityProject.Models.UserInfos>

@{
    ViewData["Title"] = "SelectAddress";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Select Address</h2>

<p>
    @* <input type="button" value="Add New Address" onclick="location.href='@Url.Action("Create", "UserInfos")'" />*@
    <input type="button" data-toggle="modal" data-target="#myModal" value="Add New Address" class="btn btn-default">
</p>
<div class="row">
    <div class="col-md-6">
        <table class="table">
            <thead>
                <tr>
                    <th>
                        @Html.DisplayNameFor(model => model.Cities)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.Area)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.Address)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.POB)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.PhoneNo)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.PhoneNo2)
                    </th>
                    <th>
                        @Html.DisplayNameFor(model => model.IsDefault)
                    </th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model)
                {
                    <tr>
                        <td>
                            @Html.DisplayFor(modelItem => item.Cities.CityName)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.Area)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.Address)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.POB)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.PhoneNo)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.PhoneNo2)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.IsDefault)
                        </td>
                        <td>
                            <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
                            <a asp-action="Details" asp-route-id="@item.Id">Details</a> |
                            <a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
                        </td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
    <div class="col-md-6">


    </div>
</div>

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="myModalLabel">Modal title</h4>
            </div>
            <div class="modal-body">
                ...
                **@{await Html.RenderPartialAsync("CreateAddress", new UserInfos());}**
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary" uiactions="@Url.Action("Create", "UserInfos")" formmethod="post">Save changes</button>
            </div>
        </div>
    </div>
</div>

Домашний контроллер:

public ActionResult CreateAddress()
        {
            return View();
        }

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Если вы используете ASP.NET Core, вам следует использовать View Components.

Создайте класс, производный от ViewComponent, содержащий метод InvokeAsync:

public class AddressViewComponent : ViewComponent
{
    public async Task<IViewComponentResult> InvokeAsync()
    {
        return View();
    }
}

Поместите ваше представление в эту структуру пути "/Views/Shared/Components/Address/Default.cshtml".

Затем, чтобы отобразить компонент в вашем модале:

<div class="modal-body">
    @await Component.InvokeAsync("Address")
</div>
0 голосов
/ 18 января 2019

Я еще не использовал Net Core, все еще в процессе обучения, но из того, что я помню из классического подхода MVC (.NET),

Создайте метод AJAX, который будет отправлять данные в контроллер, используя

@ Html.Action / @ Html.ActionLink / @ Url.Action и т. Д.

Частичное представление должно иметь доступ к объекту Model основного представления (если вы делаете @ Html.Partial)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...