MVC3 JQuery Partial View Div Обновление Div - PullRequest
2 голосов
/ 21 апреля 2011

Вот мой сценарий:

У меня есть следующее меню, созданное из viewModel

<ul>
    <li id="1" class="menu-item-click">Item 1</li>
    <li id="2" class="menu-item-click">Item 2</li>
    <li id="3" class="menu-item-click">Item 3</li>
</ul>

Каждый элемент в списке имеет «возможность» узнать, какой частичный вид он должен загрузить (он хранится в базе данных таким образом)

У меня есть следующий код для захвата события нажатия на каждый элемент списка

$(".menu-item-click").click(function () {
//load the correct partial view

}); * +1011 *

У меня вопрос, где мне хранить информацию о том, какой частичный вид загрузить?

Я мог бы сохранить его в элементе списка (li) как пользовательский атрибут. (Не похоже на лучший способ)

Хотелось бы, чтобы был способ отправить идентификатор элемента списка в тип "основного" контроллера, который мог бы вернуть правильное частичное представление.

Любая помощь / направление будет принята с благодарностью.

Ответы [ 3 ]

3 голосов
/ 21 апреля 2011

Я предпочитаю прикреплять данные к элементу, это считается семантическим способом хранения данных с вашими элементами без смешивания с кодом JS, плюс это считается стандартной практикой, начиная с HTML5.

<ul>
    @foreach (MyView item in Model.MyViews) {
        <li id="@item.id" class="menu-item-click" data-view="@item.href">Item 1</li>
    }
</ul>


$(".menu-item-click").click(function () {
    var view = $(this).data('view');
});
0 голосов
/ 21 апреля 2011

Я не уверен, какой именно тип информации вы хотите хранить и для чего, но если вы используете jQuery и его основанный на DOM, отличный способ хранения информации - это $ .data ();

$.data('#someElement','theKey','some data goes here')

Затем, позвонив:

$.data('#someElement','theKey')
//returns "some data goes here"

Вы также можете хранить там JSON-вещи, например:

$.data(document.body,'data',{name:'Jim smith', email:'xxx@xxx.com'});

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

0 голосов
/ 21 апреля 2011

Вы можете использовать data- * attribute для этого на каждом li. Я знаю, вы упомянули, что не думаете, что это был лучший вариант, но я думаю, что в итоге все будет просто и красиво.

...