я хочу знать, как передать значение в другое представление и обновить мои данные, нажав кнопку обновления в asp.net mvc - PullRequest
2 голосов
/ 19 сентября 2019

Основная проблема в том, что я новичок в asp.net mvc, моя проблема в том, что я хочу передать значения в другое представление и обновить мои данные. При нажатии на кнопку обновления, теперь я могу передать нормальные значения.Но не может передать раскрывающиеся значения.Также я не смог обновить свою (sql) базу данных.вот мой код1011 * 4.Мой моделью является AllocateClassRoom.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace UniversityMvcApp.Models
{
public class AllocateClassRoom
{
    public int Id { get; set; }

    public int DepartmentId { get; set; }
    public Department Department { get; set; }

    public int CourseId { get; set; }
    public Course Course { get; set; }

    public int SubjectID { get; set; }
    public Subject Subject { get; set; }


    public int RoomId { get; set; }
    public Room Room { get; set; }

    public DateTime date { get; set; }

    public string Day { get; set; }

    public string From { get; set; }

    public string To { get; set; }

    public TimeSpan StartTime { get; set; }

    public TimeSpan FinishTime { get; set; }

}
}

Я также поместил самый важный код, если кто-нибудь мне поможет, это будет полезно.

Ответы [ 3 ]

0 голосов
/ 19 сентября 2019

следуйте этому подходу, это будет полезно и тренировки для вашего случая. вот ссылка Кроме того, внутри вашего контроллера следуйте этому коду

[HttpGet]
public ActionResult Edit(int ID)
{
    using (UniversityDbContext db=new UniversityDbContext())
    {            
        ViewBag.SubjectID = new SelectList(db.Subjects, "SubjectID", "Code");
        ViewBag.CourseId = new SelectList(db.Courses, "Id", "Code");               
        ViewBag.DepartmentId = db.Departments.ToList();

        AllocateClassRoom allocateClassRoom = new AllocateClassRoom();

        allocateClassRoom.DepartmentId = getAllocationDetails.DepartmentId;
        allocateClassRoom.CourseId = getAllocationDetails.CourseId;
        allocateClassRoom.SubjectID = getAllocationDetails.SubjectID;
        allocateClassRoom.RoomId = getAllocationDetails.RoomId;
        allocateClassRoom.date = getAllocationDetails.date;
        allocateClassRoom.Day = getAllocationDetails.Day;
        allocateClassRoom.From = getAllocationDetails.From;
        allocateClassRoom.To = getAllocationDetails.To;
        allocateClassRoom.StartTime = getAllocationDetails.StartTime;
        allocateClassRoom.FinishTime = getAllocationDetails.FinishTime;

        var allocateClassRooms = db.AllocateClassRooms.Include(a => a.Course).Include(a => a.Department).Include(a => a.Subject).Include(a => a.Room).ToList();
        var getAllocationDetails = db.AllocateClassRooms.Where(s => s.Id == ID).FirstOrDefault();

        Department department = new Department();

        var departmnt = db.Departments.Where(s => s.ID == getAllocationDetails.DepartmentId).FirstOrDefault();
        ViewData["DepartmentData"] = departmnt.Code;

        var course = db.Courses.Where(s => s.Id == getAllocationDetails.CourseId).FirstOrDefault();
        ViewData["CourseData"] = course.Code;

        var subject = db.Subjects.Where(s => s.SubjectID == getAllocationDetails.SubjectID).FirstOrDefault();
        ViewData["subjectData"] = subject.Code;

        var room = db.Rooms.Where(x => x.Id == getAllocationDetails.RoomId).FirstOrDefault();
        ViewData["roomData"] = room.RoomNo;

        ViewData["DayValue"] = getAllocationDetails.Day;

        return View(allocateClassRoom);

    }
}

, как и ваш edit.cshtml следуйте этому коду

@model UniversityMvcApp.Models.AllocateClassRoom
@if (Errormessage != null)
{
    <label>@Errormessage</label>
}
@if (allocatedMessage != null)
{
    <label>@allocatedMessage</label>
}
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <div class="form-horizontal">
        @Html.ValidationSummary(true)
        <div class="form-group">
            @Html.Label("Department Code", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
              @{
                    var dep = ViewData["DepartmentData"];
                    var cou = ViewData["CourseData"];
                    var sub = ViewData["subjectData"];
                    var roo = ViewData["roomData"];
                    var day = ViewData["DayValue"];
                }


             <select name="DepartmentId" id="DepartmentId">
                    <option>@dep</option>
                    @foreach (var department in ViewBag.DepartmentId)
                    {
                        <option value="@department.ID">@department.Code</option>
                    }

                </select>
                @Html.ValidationMessageFor(model => model.CourseId)
            </div>
        </div>
        <div class="form-group">
            @Html.Label("Course Code", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <select name="CourseId" id="CourseId"><option>@cou</option></select>              
                @Html.ValidationMessageFor(model => model.CourseId)
            </div>
        </div>
        <div class="form-group">
            @Html.Label("Subject Code", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <select name="SubjectID" id="SubjectID"><option>@sub</option></select>                
                @Html.ValidationMessageFor(model => model.SubjectID)
            </div>
        </div>             
        <div class="form-group">
            @Html.LabelFor(model => model.RoomId, "Lecture Place", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <select name="RoomId" id="RoomId"> 
                    <option>@roo</option>
                    @foreach (var room in ViewBag.RoomId)
                    {
                        <option value="@room.Id">@room.RoomNo</option>
                    }

                </select>
                @Html.ValidationMessageFor(model => model.RoomId)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.date, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.date, new { @id = "Date" })
                @Html.ValidationMessageFor(model => model.date)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.Day, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <select name="Day" id="Day">                  
                    <option value="Saturday">Saturday</option>
                    <option value="Sunday">Sunday</option>
                    <option value="Monday">Monday</option>
                    <option value="Tuesday">Tuesday</option>
                    <option value="Wednesday">Wednesday</option>
                    <option value="Thrusday">Thrusday</option>
                    <option value="Friday">Friday</option>
                </select>
                @Html.ValidationMessageFor(model => model.Day)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.From, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.From, new { @class = "From" })
                @Html.ValidationMessageFor(model => model.From)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.To, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.To, new { @class = "To" })
                @Html.ValidationMessageFor(model => model.To)
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Update" class="btn btn-success" />
            </div>
        </div>
    </div>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
    @Scripts.Render("~/bundles/jquery")
    <script src="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js"></script>
    <script src="~/Scripts/jquery-ui-1.12.1.js"></script>
    <script>
        $(function () {
            $("#Date").datepicker({ dateFormat: 'dd-mm-yy' }).val;
        });
        $('.From,.To').timepicker({
            timeFormat: 'h:mm p',
            interval: 30,
            minTime: '8',
            maxTime: '6:00pm',
            defaultTime: '8',
            startTime: '8:00',
            dynamic: false,
            dropdown: true,
            scrollbar: true
        });
        $(document).ready(function () {           
            $("#DepartmentId").change(function () {
                var deptId = $("#DepartmentId").val();                
                $("#CourseId").empty();
                $("#CourseId").append('<option value="">Select</option>');
                var json = { DepartmentId: deptId };                
                $.ajax({
                    type: "POST",
                    url: '/AllocateClassRooms/GetCourseByDepartmentId',
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify(json),
                    success: function (data) {                        
                        $.each(data, function (key, value) {                           
                            $("#CourseId").append('<option value="' + value.Id + '">'
                                + value.Code + '</option>');

                        });
                    }
                });
            });
        });
        $(document).ready(function () {         
            $("#CourseId").change(function () {
                var courId = $("#CourseId").val();            
                $("#SubjectID").empty();
                $("#SubjectID").append('<option value="">Select</option>');
                var json = { CourseId: courId };       
                $.ajax({
                    type: "POST",                 
                    url: '/AllocateClassRooms/GetSubjectByCourseId',
                        contentType: "application/json; charset=utf-8",
                            data: JSON.stringify(json),
                                success: function (data) {                                   
                                    $.each(data, function (key, value) {
                             $("#SubjectID").append('<option value="' + value.SubjectID + '">' + value.Code + '</option>');                                       
                                    });
                                }
            });
        });
    });
    </script>
}
</div>

я думаю, что согласноваш код, он должен тренироваться для вас

0 голосов
/ 19 сентября 2019

@ Дилки, я понял твою проблему, в соответствии с твоей моделью, конфликт внешних ключей случится, поэтому ты не мог получить эти значения. Попробуйте этот код в методе поста контроллера.

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(AllocateClassRoom allocateClassRoom)
    {
            string subID = Request.Form["SubjectID"].ToString();
            var subject = db.Subjects.Where(s => s.Code == subID).FirstOrDefault();
            int departmentID = Convert.ToInt32(subject.DepartmentId);
            int CourseID = Convert.ToInt32(subject.SubCourForId);
            int SubjectID = subject.SubjectID;
            string roomNo = Request.Form["RoomId"].ToString();
            var room = db.Rooms.Where(s => s.RoomNo == roomNo).FirstOrDefault();
            int roomID = room.Id;
            allocateClassRoom.DepartmentId = departmentID;
            allocateClassRoom.CourseId = CourseID;
            allocateClassRoom.SubjectID = SubjectID;
            allocateClassRoom.RoomId = roomID;  

           allocateClassRoom.StartTime = DateTime.ParseExact(allocateClassRoom.From, "h:mm tt", CultureInfo.InvariantCulture).TimeOfDay;
           allocateClassRoom.FinishTime = DateTime.ParseExact(allocateClassRoom.To, "h:mm tt", CultureInfo.InvariantCulture).TimeOfDay;

         db.Entry(allocateClassRoom).State = System.Data.Entity.EntityState.Modified;
         db.SaveChanges();
         return RedirectToAction("Index");
    }
0 голосов
/ 19 сентября 2019

Dilky

Я думаю, что использование помощника Dropdownlist вместо создания раскрывающегося списка с помощью оператора "for ... each" может решить вашу проблему.

Проверьте эту ссылку: Как написать простой Html.DropDownListFor ()?

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...