Asp.net MVC получает полный URL-адрес для метода действия - PullRequest
0 голосов
/ 07 марта 2012

Существующий код в проекте использует Url.Action для получения полного URL-адреса для отображения в диалоговом окне.Таким образом, он имеет функцию контроллера, которая выглядит следующим образом:

public ActionResult CheckItem(bool isCorrect, string id){}

, а затем Url.Action просто:

Url.Action("CheckItem", new { isCorrect =  true, id = 2})

Теперь все это работает просто отлично.Но я должен отправить список <> объектов, у меня все это работает, отправив форму.

Итак, мой вопрос: есть ли способ отправки формы с помощью Url.Action?Если нет, то каков наилучший способ отправки моей формы и возврата URL.

Спасибо.

1 Ответ

1 голос
/ 08 марта 2012

Я не совсем понял, что вам нужно, но я думаю, что у вас есть выбор элементов от пользователя, возможно, с использованием флажков или что-то еще.

Ответ может быть по этой ссылке: CheckboxList inMVC3.0

В основном, что вам нужно сделать: создать действие, которое получает список или элементы IEnumerable, и поместить вашу форму в POST для этого действия.

Я сделалпример кода, который может помочь:

У вас может быть модель предмета:

using System;

namespace SandboxMvcApplication.Models
{
    public class Item
    {
        public int Id { get; set; }
        public string Title { get; set; }
    }
}

Ваш контроллер может быть:

public class HomeController : Controller
{
    List<Item> itemList = new List<Item>() {
            new Item() { Id = 1, Title = "Item 1" },
            new Item() { Id = 2, Title = "Item 2" },
            new Item() { Id = 3, Title = "Item 3" }
        };

    public ActionResult Index()
    {
        return View(itemList);
    }

    public ActionResult ProcessForm(int[] items)
    {
        var selectedItems = new List<Item>();
        foreach (var item in items)
        {
            selectedItems.AddRange(itemList.Where(i => i.Id == item));
        }

        return View("Success", selectedItems);
    }
}

Представление индекса (~ /Views / Home / Index.cshtml):

@model List<SandboxMvcApplication.Models.Item>

@{
    ViewBag.Title = "Home Page";
}

<form action="@Url.Action("ProcessForm")" method="post">
    <ul>
        @foreach (var item in Model)
        {
            <li><input type="checkbox" name="items" value="@item.Id" />@item.Title</li>
        }
    </ul>

    <input type="submit" value="Send selected items"/>
</form>

Наконец, представление об успешном просмотре, чтобы показать, какие элементы выбрал пользователь:

@model List<SandboxMvcApplication.Models.Item>

@{
    ViewBag.Title = "Success";
}

<h2>Success: Selected items were</h2>

<ul>
@foreach (var item in Model)
{
    <li>@item.Id => @item.Title</li>            
}
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...