asp.net mvc параметр от страницы до частичного представления

Многие разработчики все еще выполняют запрос, чтобы проверить, присутствует ли поле в таблице, а затем выполняют запрос вставки или обновления в соответствии с результатом первого запроса. Попробуйте использовать синтаксис ON DUPLICATE KEY, это намного быстрее и лучше, чем выполнение 2 запросов. Более подробную информацию можно найти здесь

ВСТАВИТЬ В таблицу (a, b, c) ЗНАЧЕНИЯ (4,5,6) ON DUPLICATE KEY UPDATE c = 9;

Если вы хотите сохранить то же значение для c, вы можете выполнить обновление с тем же значением

INSERT INTO table (a, b, c) VALUES (4,5, 6) ON DUPLICATE KEY UPDATE c = 6;

разница между «replace» и «on duplicate key»:

replace: вставляет или удаляет и вставляет

для дублирующего ключа: вставляет или обновляет

, если в вашей таблице нет первичного или уникального ключа, замена не имеет никакого смысла.

Вы также можете использовать функцию VALUES, чтобы избежать необходимости указывать фактические значения дважды. Например. вместо

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=6;

вы можете использовать

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);

, где VALUES(c) будет оцениваться до значения, указанного предварительно (6).

6
задан womp 20 June 2009 в 17:31
поделиться

4 ответа

Для того, чтобы делать то, что вы хотите, вам нужно будет добавить идентификатор в конструкцию ViewData.

var sysfunctions= UnisegurancaService.FunctionsRepository.All();
ViewData["NeededID"] = id
return View(sysfunctions);

затем в вашем представлении, где вы визуализируете частичное

<%= Html.RenderPartial("GridFunction", (int)ViewData["NeededID"]) %>

Cast, как требуется, конечно .

Все, что проталкивается как второй параметр, становится .Model в партиале. Я бы посоветовал также строго печатать ваши частичные данные.

6
ответ дан 10 December 2019 в 02:52
поделиться

Try this:

<% Html.RenderPartial("GridFunction", new ViewDataDictionary {{"Id", ViewData["Id"]}}); %>

UPDATED:

And add this in your controller action:

ViewData["Id"] = Id;

UPDATED:

And in your GridFunction partial View you can access Id as:

<%= ViewData["Id"] %>
3
ответ дан 10 December 2019 в 02:52
поделиться

// Контроллер

  public ActionResult EditFunctions(int id)
    {

        var sysfunctions= UnisegurancaService.FunctionsRepository.All();
        return View(sysfunctions);
    }
    // This is the controller (it does no need the parameter "ID")

// Это представление "EditFunctions"

<div id="formFunction">
<% Html.RenderPartial("FormFunction"); %>
</div>


<div id="gridFunction">
<% Html.RenderPartial("GridFunction"); %> // The grid needs the ID to work correctly but its in the parent page not in the partial call....and the call is an ajax call
</div>
0
ответ дан 10 December 2019 в 02:52
поделиться

If some dependency of the page needs the parameter, then the page needs to know enough to pass the data in, so the page should be able to provide the data. Or, more simply, just add the parameter to the Page's viewdata and be done with it.

0
ответ дан 10 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: