gpt4 book ai didi

asp.net-mvc-4 - MVC4 : Sending child Partial view values to controller?

转载 作者:行者123 更新时间:2023-12-01 06:31:03 25 4
gpt4 key购买 nike

首先,我必须说我是 MVC4 的新手,正在开发这个应用程序并同时学习 MVC4 :)。

在这个应用程序中,
以下是父 View 呈现 3 个局部 View 的地方也有一个按钮:

[code]
<td id="track">@Html.Partial("_Track",Model)</td><br>
<td id="tech">
<div id="Technologies"> @Html.Partial("_Technology",Model)
</div></td></tr>
..
[some code]
..

<td class="subtopic">
<div class="subtopiclist" id="subque">@Html.Partial("_Subtopics",Model)</div><br>
<input type="Submit" value="Fetch Interview Questions" name="Fetch" id="Fetch" />
</td>

部分 View 1(它包含下拉列表):
@model MvcApplication3.Models.CommonWrapper

@using (Ajax.BeginForm("SelectTrack", "Home", new AjaxOptions { UpdateTargetId = "Technologies" }))
{
@Html.DropDownListFor(
m=>m.SelectedTrackId,
new SelectList(Model.track, "TrackId", "TrackName"),
string.Empty
)
}
<script type="text/javascript">
$('#SelectedTrackId').change(function () {
$(this).parents('form').submit();
});
</script>

Parital View2(它包含下拉列表):
@model MvcApplication3.Models.CommonWrapper
@if (Model.tech != null && Model.tech.Count() > 0)
{
using (Ajax.BeginForm("SelectTechnology", "Home", new AjaxOptions { UpdateTargetId = "subque" }))
{
@Html.HiddenFor(m => m.SelectedTrackId)
@Html.DropDownListFor(
m => m.SelectedTechId,
new SelectList(Model.tech, "TechId", "TechName"),
string.Empty
)
}
}

<script type="text/javascript">
$(document).on('change', '#SelectedTechId', function () {
$(this).parents('form').submit();
});

</script>

部分 View 3(它包含多个复选框):
@if (Model.subtopic != null && Model.subtopic.Count() > 0)
{
<table>
@for (int i = 0; i < Model.subtopic.Count; i++)
{
<tr><td>
@Html.CheckBoxFor(m => m.subtopic[i].IsSelected, new { id = "subTopic_" + i })
@Html.HiddenFor(m => m.subtopic[i].SubtopicName)
@Html.DisplayFor(m => m.subtopic[i].SubtopicName)
<td>
</tr>
}
</table>

}

现在在父 View 中,我想从这三个局部 View 中获取值。此外,我需要将这些获取的值发送到 Controller 。
这该怎么做 ?任何人都可以帮我解决这个问题。
提前致谢

添加 Controller 代码:
[HttpPost]
public ActionResult SelectTrack(int? selectedTrackId)
{
CommonWrapper wrapper = new CommonWrapper();
wrapper.tech = new List<TechModel>();

if (selectedTrackId.HasValue)
{
wrapper.tech = (from s in CommonWrapper.GetTechnology()
where s.TrackId == selectedTrackId
orderby s.TechName
select s).ToList();
}

return PartialView("_Technology", wrapper);

}

[HttpPost]
public ActionResult SelectTechnology(int? selectedTechId)
{
CommonWrapper wrapper = new CommonWrapper();
wrapper.subtopic = new List<SubtopicsModel>();

if (selectedTechId.HasValue)
{
wrapper.subtopic = (from s in CommonWrapper.GetSubtopics()
where s.TechId == selectedTechId
orderby s.SubtopicName
select s).ToList();
}

return PartialView("_Subtopics", wrapper);

}

最佳答案

尝试将 ajax 表单更改为简单地使用 jquery 发布到所需的 Controller 操作。然后这将您的部分 View 与需要更新目标分开。

您可以将此方法应用于调用不同 Controller 操作的每个下拉列表。

删除您的 Ajax.BeginForm 和相应的 jquery 代码,并将每个代码替换为以下代码。

父 View

<script type="text/javascript">
$(function ()
{
$("#SelectedTrackId").change(function ()
{
var selectedValue = $(this).val();
$.ajax(
{
type: "post",
data: selectedValue,
url: url,
success: function (data)
{
// data contains your partial view
$("#some-container-id").html(data);
}
});
});
});
</script>

关于asp.net-mvc-4 - MVC4 : Sending child Partial view values to controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com