首页 > 解决方案 > 在 MVC 局部视图中使用 Bootstrap 插件的正确方法

问题描述

我想使用 Bootstrap Filestyle 2 插件来自定义输入文件。问题是我的输入文件处于模式中,其正文内容显示在部分视图中。

它是这样工作的:

模态调用:

@Ajax.ActionLink("Open", "PartialView",
                            new {},
                            new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "Preview_myModal_test", InsertionMode = InsertionMode.Replace, OnSuccess = "Open_myModal_test()" },
                            new { @class = "btn btn-sm btn-default" })

在哪里

function Open_myModal_test() {
    $('#myModal_test').modal('show');
}

模态的定义:

<div class="modal fade" id="myModal_test" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content -->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Test</h4>
            </div>
            <div class="modal-body align-self-center" id="Preview_myModal_test">
                @*PartialView*@
            </div>
        </div>
    </div>
</div>

我的部分视图如下所示:

    @using (Html.BeginForm("Main", "Controller", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <div class="form-group">
            <!-- Here I would like to use this: -->
            <input type="file" class="filestyle">
        </div>
    
        <div class="text-right">
            <input type="submit" value="Finish and Send" class="btn btn-sm btn-default" />
            <button class="btn btn-sm btn-default" data-dismiss="modal">Cancel</button>
        </div>
    }

我也不知道在哪里加载bootstrap-filestyle.min.js,因为据我所知,无法在局部视图中使用部分。

我希望有人可以在这里帮助我。

标签: javascriptasp.net-mvctwitter-bootstrapmodel-view-controllerbootstrap-modal

解决方案


asp.net mvc 小提琴链接https://dotnetfiddle.net/CdIgBf

控制器

public class HomeController : Controller
{
    public ActionResult PartialViewAction()
    {
        return PartialView("PartialView");
    }

    [HttpPost]
    public ActionResult Index30(HttpPostedFileBase theFile)
    {
        return View();
    }

    public ActionResult Index30()
    {
        return View();
    }

看法

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index30</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-filestyle/2.1.0/bootstrap-filestyle.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajax-unobtrusive/3.2.6/jquery.unobtrusive-ajax.min.js"></script>
    <script>
        function Open_myModal_test() {
            $('#myModal_test').modal('show');
        }
    </script>
</head>
<body>
    @Ajax.ActionLink("Open", "PartialViewAction",
                                    new { },
                                    new AjaxOptions
                                        {
                                            HttpMethod = "GET",
                                            UpdateTargetId = "Preview_myModal_test",
                                        InsertionMode = InsertionMode.Replace,
                                            OnSuccess = "Open_myModal_test()"
                                        },
                                    new { @class = "btn btn-sm btn-default" })

    <div id="Preview_myModal_test"></div>
</body>
</html>

局部视图

<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-filestyle/2.1.0/bootstrap-filestyle.min.js"></script>
<div class="modal fade" id="myModal_test" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content -->
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Test</h4>
            </div>
            <div class="modal-body align-self-center" id="Preview_myModal_test">
                @using (Html.BeginForm("Index30", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
                {
                    <div class="form-group">
                        @Html.TextBox("theFile", "", new { type = "file", @class = "filestyle" }) <br />
                    </div>

                    <div class="text-right">
                        <input type="submit" value="Finish and Send" class="btn btn-sm btn-default" />
                        <button class="btn btn-sm btn-default" data-dismiss="modal">Cancel</button>
                    </div>
                }
            </div>
        </div>
    </div>
</div>

模态


推荐阅读