使用htmlbeginform加载局部视图的视图

问题描述 投票:0回答:1

我有一个包含很多组件的项目,可以使用更多选项来更新这些组件中的任何一个。因此,我认为最好使用一个下拉列表来选择要添加选项的组件,然后加载一个局部视图,该视图具有要添加选项的特定组件的输入字段,然后按提交。但这似乎不能很好地与HTML.BeginForm一起使用,我不确定为什么。更具体地说,我不知道这是因为它是局部视图还是我将Begin表单弄乱了。

编辑:抱歉,我没有解释运行此命令时会发生什么。当我按下提交按钮时,什么也没有发生。只是什么也没有发生,它不会发送到partialview的发布部分。

这是选择组件的页面:

<p></p>
<h3>What needs to be added?</h3>
<div id="match-alert" class="alert" role="alert"></div>
<select class="form-control" id="Type-Selector" name="Type-Selector">
        <option value="-1">Select Option</option>
        <option value="1">New Manufacturer</option>
        <option value="2">New Model<option>
        <option value="3">New Series</option>
</select>

<div id="partialPlaceHolder" style="display:none;"></div>

@section Scripts{
    <script src="http://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
           $("#Type-Selector").change(function () {
                var selectedID = $(this).val();

                $.get("/Components/SelectedItem/" + selectedID, function (data) {
                    $('#partialPlaceHolder').html(data);
                    $('#partialPlaceHolder').fadeIn('fast');

        })
    </script>
    }

[Selected Item将传回有问题的局部视图(到目前为止,我只有一个视图):

     public ActionResult SelectedItem(int ID)
        {


            switch (ID)
            {
                case 1:
                    return PartialView("_UpdateManufacturer");
            }

            return View();
        }

返回的局部视图:

@model AutoDealer.ViewModels.UpdateManufacturerViewModel

<table id="ManufactureEntry"  class="d-flex justify-content-center" style="width:20%">
    <thead>
        <tr>
            <th>New Manufacturer</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            @using (Html.BeginForm("_UpdateManufacturer","Components",  FormMethod.Post))
            {
                <td>@Html.TextBoxFor(Model => Model.Manufacturer.cDescription )</td>
                <td><input id="submit" type="submit" value="Add" /></td>
            }
        </tr>
    </tbody>
</table>
c# asp.net-mvc
1个回答
0
投票

所以我已经找到了解决方案,但我不知道为什么更改有效。我将发布所做的更改。我已经将Html.BeginForm移动到表组件上方。这是代码更改:

@model AutoDealer.ViewModels.UpdateManufacturerViewModel

@using (Html.BeginForm("_UpdateManufacturer","Components",  FormMethod.Post))
{
    <table id="ManufactureEntry"  class="d-flex justify-content-center" style="width:20%">
        <thead>
            <tr>
                <th>New Manufacturer</th>
                <th></th>
            </tr>
        </thead>
        <tbody>
            <tr>
                    <td>@Html.TextBoxFor(Model => Model.Manufacturer.cDescription )</td>
                    <td><input id="submit" type="submit" value="Add" /></td>
            </tr>
        </tbody>
    </table>
}

现在,当将局部视图加载到主选择页面中时,提交按钮将起作用。我不知道的是为什么此修复程序可以做到这一点。如果有人对我真正想知道的原因有一个猜测或理解,因为当我自己加载部分视图时,旧代码就会起作用。仅当partialview在另一页中加载时它才起作用。

© www.soinside.com 2019 - 2024. All rights reserved.