【问题标题】:MVC Pass value from view to dynamic partial viewMVC 将值从视图传递到动态局部视图
【发布时间】:2018-03-01 00:37:05
【问题描述】:

我正在尝试制作一个局部视图,它将动态添加与我输入一样多的字段。我输入了字段数,然后我想在形成的字段中选择星期几并在控制器中处理这些数据,但是我在部分视图中传递的天数有问题。 控制器

public class CoursesController : Controller
{
    private SchoolContext db = new SchoolContext();
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Create([Bind(Include = "CourseId,Name,Language,LanguageProficiency,StartDate,EndDate,TeacherId,NumberOfLessonsPerWeek")] Course course)
    {
        if (ModelState.IsValid)
        {
            db.Courses.Add(course);
            await db.SaveChangesAsync();
            return RedirectToAction("Index");
        }
        return View(course);
    }
    public ActionResult ShowDaysOfweek(int? countDays)
    {
        //countDays = 2;
        ViewBag.CountDays = countDays;
        var days =  new List<DayOfWeek> { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday, DayOfWeek.Sunday };
        ViewBag.DaysOfWeek = new SelectList(days);
        return PartialView("ShowDaysOfweek");
    }
}

在这个视图中,我可以通过单击脚本中的按钮来添加全景视图:

@model SchoolManagementSystem.Models.Course
@using (Ajax.BeginForm(new AjaxOptions { }))
{
    @Html.AntiForgeryToken()
    <div class="form-horizontal">
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }
    <div class="form-group">
        @Html.Label("Number Of Lessons Per Week", htmlAttributes: new { @class = "control-label col-md-3" })
        <div class="col-md-5">
            @Html.TextBox("NumberOfLessonsPerWeek", null, htmlAttributes: new { @class = "form-control", @type = "number", @id = "numberOfLessonsPerWeek" })
        </div>
        <div>
            <input type="button" value="Add days" id="Show" class="btn btn-default" />
        </div>
    </div>
    <div id="ShowResults">

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
</div>
}
<script type="text/javascript">
    var url = '@Url.Action("ShowDaysOfweek", "Courses")';
    $('#Show').on("click", function () {
        var countDays = $('#numberOfLessonsPerWeek').val();
        url += '/?countDays=' + countDays;
         $('#ShowResults').load(url);
    })
</script>

部分视图

@for (var i = 0; i < ViewBag.CountDays; i++)
{
<div class="form-group">
    @Html.Label("Day of week", htmlAttributes: new { @class = "control-label col-md-3" })
    <div class="col-md-5">
        @Html.DropDownList("DaysOfWeek", (IEnumerable<SelectListItem>)ViewBag.DaysOfWeek, htmlAttributes: new { @class = "form-control", style = "height: 35px" })
    </div>
</div>
}

有可能做点什么吗?谢谢!

【问题讨论】:

  • 您是否尝试过使用 Html.Action 生成包含参数的 url。

标签: c# asp.net-mvc razor asp.net-mvc-5 html-helper


【解决方案1】:

首先用部分视图url创建隐藏字段

<input type="hidden" value="@Url.Action("ShowDaysOfweek", "Courses", new { countDays= "numberOfLessonsPerWeek" })" id="hdnURLShowDaysOfweek" />

在javascript中读取url并替换参数

<script type="text/javascript">
    var url = $('#hdnURLShowDaysOfweek').val();
    $('#Show').on("click", function () {
    url = url.replace("numberOfLessonsPerWeek",$('#numberOfLessonsPerWeek').val());
             $('#ShowResults').load(url);
    })
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2019-11-14
    相关资源
    最近更新 更多