用另一个局部视图中的部分视图替换父视图

时间:2017-06-26 07:08:13

标签: asp.net-mvc

This My Parent View In this i am calling partialview(_CityList.cshtml).



@model MedicalOrbit.City
@{
    ViewBag.Title = "CreateCity";
}

<h2>Add City</h2>


@using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()


       <div id="Maindiv" class="col-lg-7">

        <div class="ibox float-e-margins">
            <div class="ibox-title">
                <h5>City Details</h5>
                <div class="ibox-tools">
                    <a class="collapse-link">
                        <i class="fa fa-chevron-up"></i>
                    </a>
                </div>
            </div>
            <div class="ibox-content">
                <div class="row">
                    <div class="col-sm-6 b-r">
                        @*<hr />*@
                        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                        <div class="form-group">
                            <label>City Name:</label>

                            @*@Html.LabelFor(model => model.CityName, htmlAttributes: new { @class = "control-label col-md-2" })*@
                            <br>
                            <div >
                                @Html.EditorFor(model => model.CityName, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter City" } })
                                @Html.ValidationMessageFor(model => model.CityName, "", new { @class = "text-danger" })
                            </div>
                        </div>

                        <br>
                            <div>

                                <input type="submit" value="Create" class="btn btn-w-m btn-primary" />
                                &nbsp; &nbsp;
                                <input type="submit" value="Cancel" class="btn btn-w-m btn-success" />

                            </div>

                    </div>
                    <div>
                        <div id="CityList" class="col-sm-6">
                            @*@Html.Partial("_CityList");*@
                            @Html.Action("CityList", "City")
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

}




<div id="Editdiv">
    @Html.Action("EditCity", "City")
</div>

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="~/Scripts/jquery-1.7.1.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>


Partial View(_CityList.cshtml)

 <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.CityName)
            </th>
            <th>Action</th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.CityName)
                </td>
                <td>

                    @*@Html.ActionLink("Edit", "Edit", new { id = item.CityID })*@ 
                    @Ajax.ActionLink("Edit City", "EditCity", "City", new AjaxOptions()
               {
                   UpdateTargetId = "Maindiv",
                   InsertionMode = InsertionMode.ReplaceWith
               })|
                    @Html.ActionLink("Details", "Details", new { id = item.CityID }) |
                    @Html.ActionLink("Delete", "Delete", new { id = item.CityID })  |
                    @Html.ActionLink("Area", "Area", new { @class = "btn btn-warning btn-circle btn-lg fa fa-times", id = item.CityID })
                </td>
            </tr>
        }

    </table>



following is my Controller Code




using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Validation;
using System.Diagnostics;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MedicalOrbit.Controllers
{
    public class CityController : Controller
    {
        MediOrbitDatabaseEntities db = new MediOrbitDatabaseEntities();
        // GET: City
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult CityList()
        {
            return PartialView("_CityList", db.Cities.Where(x => x.status == false).ToList());

        }

        public ActionResult CreateCity()
        {

            return View();
        }

        // POST: City/CreateCity
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult CreateCity(City city)
        {

                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {
                    city.Users = "ashwini";
                    city.DateTime = DateTime.UtcNow;
                    city.status = false;

                    db.Cities.Add(city);
                    db.SaveChanges();
                    return RedirectToAction("CreateCity");

                }
            return View(city);
        }

        public ActionResult EditCity(int? id)
        {
            City city = db.Cities.Where(x => x.CityID == id).FirstOrDefault();
            if (city == null)
            {
                return HttpNotFound();
            }
            return View(city);
        }
        // POST: /Admin/City/Edit
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult EditCity(City city)
        {
            if (ModelState.IsValid)
            {
                city.Users = "Ashwini";
                city.DateTime = DateTime.UtcNow;
                city.status = false;

                db.Entry(city).State = EntityState.Modified;
                db.SaveChanges();

                RedirectToAction("CreateCity");
            }

            return PartialView("_EditCity",city);

        }


    }
} 

现在我想要的是在_CityList.cshtml局部视图中,当用户点击编辑动作链接时,主要的父视图应该被替换为另一个局部视图(_EditCity.cshmtl)。我可以实现这个。我没有经验在mvc所以plz帮助我。

1 个答案:

答案 0 :(得分:0)

我正在向您展示如何进行部分观看。希望如果你愿意,你可以在部分视图中使用部分视图。

可能有额外的代码可以帮助您。

查看:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>IndexValid4</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $('#LOCATION_NUMBER').click(function () {
                var store = $('#storeNbr').val();
                this.href = this.href.split("?")[0];
                this.href = this.href + '?LOCATION_NUMBER=' + encodeURIComponent(store);
            });
        })
    </script>
</head>
<body>
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h4 class="modal-title" id="myModalLabel">My Modal</h4>
                </div>
                <div class="modal-body">
                </div>
                <div class="modal-footer">
                    <label class="btnIEFix">You can also, Click in Grey Area Outside Modal To Close</label>
                    <button title="You can also, Click in Grey Area Outside Modal To Close" type="button" class="btn btn-secondary bootBtnMargin" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>
    @Html.HiddenFor(r => r.storeNbr, new { id = "storeNbr" })
    @*https://stackoverflow.com/questions/5838273/actionlink-routevalue-from-a-textbox*@
    @Ajax.ActionLink(
                                   "Trigger Ajax",
                                            "ReleaseVersion",
                                       null,
                                       new AjaxOptions
                                        {
                                            UpdateTargetId = "result",
                                            InsertionMode = InsertionMode.Replace,
                                            HttpMethod = "GET"
                                        },
                                                new
                                                {
                                                    id = "LOCATION_NUMBER"})
    <div id="result"></div>
</body>
</html>

控制器:

public class HomeController : Controller
{
    public PartialViewResult ReleaseVersion(string LOCATION_NUMBER = "")
    {
        return PartialView("_ReleaseVersion");  //, model
    }

    public ActionResult IndexValid4()
    {
        var storeViewModel = new StoreViewModel { storeNbr = 5 };
        return View(storeViewModel);
    }

_ReleaseVersion共享文件夹中的部分视图:

release version partial view