Как создать динамические свойства в модели и использовать в контроллере и представлении.- MVC - PullRequest
1 голос
/ 19 января 2012

Я ищу решение, которое создает динамические свойства для создания в Model.

Я хочу использовать их в моем представлении и контроллере.

Может ли кто-нибудь иметь представление, как его создать?

У меня есть сценарий в моем проекте, где на одной странице будут параметры, скажем, Profile2, Profile5 и т. Д.

Профиль 2 может иметь два URL-адреса для отправки от пользователя.

Профиль 5 может иметь пять URL-адресов для отправки от пользователя.

и

Итак ........

Есть ли какое-либо решение или альтернатива для этого ????

Ответы [ 4 ]

3 голосов
/ 19 января 2012

Он, Амит, для вашей ситуации "У меня есть сценарий в моем проекте, где на одной странице будут варианты, скажем, Profile2, Profile5 и т. Д.

Профиль 2 может иметь два URL-адреса для отправки от пользователя.

Профиль 5 может иметь пять URL-адресов для отправки из использования "

Вы хотите, чтобы этот URL был в ваших свойствах в порядке. Поэтому сделайте одну вещь, чтобы создать свойство, подобное этому.

public List<string> urlList {get;set;}

используйте это в вашей собственности и добавьте URL в список. Вы не можете добавить номер URL.

2 голосов
/ 19 января 2012

Это именно то, для чего ViewBag . Это динамическое свойство в Controller и View.

public ActionResult SomeAction()
{
   ViewBag.Message = "Hello, world";
}


<p>@ViewBag.Message</p>

Это позволит вам отправлять анонимные значения свойств из вашего контроллера в ваш вид. Однако, если вы хотите опубликовать различное количество значений (URL в вашем примере), вы должны использовать IList в качестве модели.

@model IList<string>

@for (int i = 0; i < Model.Count; i++)
{
    @Html.EditorFor(model => model[i])
}
1 голос
/ 19 января 2012

Ваша модель, вероятно, должна хранить значения в списке. Вот пример, объясняющий, как отобразить и сохранить данные для свойства списка.

Как взаимодействовать со списком в MVC

0 голосов
/ 20 января 2012

смотри, это то, что я сделал в качестве альтернативы.

Создайте все div и другие поля в MODEL и используйте jQuery для обхода.

Полагаю, это альтернатива, но не совсем то, что я хочу. Все еще ищу ответ. Я публикую это, так как это может пригодиться кому-то в будущем.

Пожалуйста, проверьте ниже.

<div>
        @for (var i = 0; i < ProfileCount; i++)
        {
            <label>
                URL:</label>
            <input type="text" id=@string.Format("URL{0}", i) />
            <label>
                CheckName:</label>
            <input type="text" id=@string.Format("URL{0}CheckName", i) />
            <label>
                Run Check From:</label>
            @Html.DropDownList(string.Format("URL{0}Region", i), (IEnumerable<SelectListItem>)ViewBag.Regions) 
            <br />
            <span id=@string.Format("URL{0}Result", i)></span>
            <input type="button" value="Create check" id=@string.Format("URL{0}CheckSetup", i)  onclick="getResponseFromUrl('@string.Format("URL{0}')", i);" />
            <input type="button" value="Delete check" id=@string.Format("URL{0}Delete", i) onclick="DeleteCheck('@string.Format("URL{0}')", i);"
                style="display: none" />
            <input type="hidden" id=@string.Format("URL{0}Hidden", i)  />
            <br />
            <br />
            <br />
        }
    </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...