Передать скрытое поле в функцию контроллера ядра asp.net - PullRequest
0 голосов
/ 11 марта 2019

У меня есть следующее действие, которое представляет собой ICollection действий на заголовок действия. Мне нужно получить доступ к идентификатору заголовка действия, чтобы я мог вернуть строки в этом действии контроллера.

public ActionResult ActivityLines_Read([DataSourceRequest]DataSourceRequest request ActivityLines activitylines ,int? activityID)
{            
        int ActivityLineId = actvitity.ActivityHeaderId;
        var result = GetAllActivityLines(ActivityLineId);
        var dsResult = result.ToDataSourceResult(request);
        return Json(dsResult);
}

public List<ActivityLines> GetActivityLines(int? activityHeaderId)
{
        int? _activityHeaderId = activityHeaderId;
        var staffRepo = new StaffRepositry(_db);

        List<ActivityLines> _activityLines = new List<ActivityLines>();
        _activityLines = _db.ActivityLines.AsNoTracking().Where(a=>a.ActivityHeaderId== _activityHeaderId).ToList();
       return _activityLines;
    }

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

<div class="container py-5">
    <div class="row">
        <div class="col-md-10 mx-auto">
            <form>

                @Html.HiddenFor(x => x.ActivityHeaderId)
                <div class="form-group row">

                    <div class="col-sm-9">
                        <label for="inputFirstname">Activty Name</label>
                    </div>
                    @Html.TextBoxFor(model => model.Name, new { @class = "form-control" })

                  </div>
                </div>
                <div class="form-group row">

                    <div class="col-sm-3">
                        <label for="inputLastname" class="form-control">Activity Start Date</label>
                        @Html.Kendo().DateTimePickerFor(model => model.ActivityDate)
                    </div>
                    <div class="col-sm-3">
                        <label for="inputLastname" class="form-control">Activity End Date</label>
                        @Html.Kendo().DateTimePickerFor(model => model.ActivityEndDate)
                    </div>

                </div>
                <div class="form-group row">

                    <div class="col-sm-3">
                        <label for="inputLastname" class="form-control">Location</label>
                        @foreach (var item in (SelectList)ViewBag.Location)
                        {
                            @Html.RadioButtonFor(model => model.OnSite, item.Value, false)
                            <label class="control-label">@item.Text</label>
                        }
                    </div>

                </div>
                <div class="form-group row">
                    <div class="col-md-10">
                        <label for="inputLastname" class="form-control">Description</label>
                        @Html.TextAreaFor(model => model.Description, new { @class = "whatever-class", @cols = 115, @rows = 10 })

                    </div>
                </div>
                <div class="form-group row">
                    <div class="col-sm-6">
                        <label for="inputCity">Status </label>
                        <select asp-for="Status"
                                class="form-control"
                                asp-items="@(new SelectList(@ViewBag.ProjectStatusTypes,"LookupCode", "LookupDescription"))"></select>


                    </div>
                    <div class="col-sm-3">
                        <label for="inputState">ActivityType </label>
                        <select asp-for="ActivityType"
                                class="form-control"
                                asp-items="@(new SelectList(@ViewBag.ProjectTypes,"LookupCode", "LookupDescription"))"></select>


                    </div>
                </div>

                <div class="form-group row">
                    <div class="col-sm-6">
                        <label for="inputCity">Staff </label>
                        <select asp-for="StaffId"
                                class="form-control"
                                asp-items="@(new SelectList(@ViewBag.ListOfStaff,"StaffID", "FirstName"))"></select>

                    </div>
                    <div class="col-sm-3">
                        <label for="inputState">Hours Left On Project </label>
                        <label for="inputState"><div class="badge" style="font-size:18px;">26</div> </label>
                        <label for="projecthours">If Porject hours fall below ten Contact Charlie.</label>
                    </div>
                </div>


                <div class="form-group row">

                    <div class="col-sm-12">

                        @(Html.Kendo().Grid<FuelActivityTrackerDal.Models.ActivityLines>
                                ().Name("activityLines")
                                 .Events(e => e.Edit("onEdit"))
                                 .Columns(columns =>
                                 {
                                     columns.Bound(p => p.Description).Filterable(false);
                                     columns.Bound(p => p.StartTime).Filterable(false);
                                     columns.Bound(p => p.EndTime).Filterable(false);
                                     columns.Bound(p => p.Status);
                                     columns.Command(command => { command.Edit(); command.Destroy(); }).Width(450);


                                 })
                                        .ToolBar(toolbar => toolbar.Create())
                                                    .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("ActvityEditorLines").Window(w => w.Title("Edit Provider").Width(500)))
                                                .Scrollable()
                                                .Pageable()
                                                .Sortable()
                                                .Filterable()
                                                .DataSource(dataSource => dataSource
                                                .Ajax()
                                                        .Events(events => events.Error("error_handler"))
                                                        .Model(model => model.Id(p => p.ActivityLineId))
                                .Events(events => events.Error("error_handler"))
                                .Read(read => read.Action("ActivityLines_Read", "Activity"))
                                .Update(update => update.Action("ActivityLines_Update", "Activity").Type(HttpVerbs.Post)))

                        )
                    </div>
                </div>

                <div class="form-group row">
                    <div class="col-sm-6">

                    </div>
                </div>


                <button type="button" class="btn btn-primary px-4 float-right">Add Work Item</button>
                <button type="button" class="btn btn-primary px-4 float-right">Put Case & Client On Hold</button>
                <button type="button" class="btn btn-primary px-4">Cancel</button>
            </form>
        </div>
    </div>

Мой главный вопрос: как мне сдать

@Html.HiddenFor (x => x.ActivityHeaderId)

Для моей функции во второй сетке, чтобы она знала, как и какие строки действий возвращать, т. Е. Действие 1 может иметь 5 действий, мне просто не нужно, как отправлять значение скрытого поля в ActivityLines_Read в качестве параметра.

см. Изображение ниже

enter image description here

Редактировать 2

Обратите внимание, что я не хочу отправлять переменную в эту функцию, поскольку она использует ее для чтения строк основного класса. Как мне это сделать правильно или я использую модель неправильно?.

Это моя модель для деятельности, в которой есть строки в виде коллекций. Должен ли я просто проверять коллекцию во второй сетке, чтобы убедиться, что данные верны?

public class ActivityHeader
{ 
    public int ActivityHeaderId { get; set; } //(int, null)
    public DateTime? ActivityDate { get; set; } //(date, null)
    public string Name { get; set; } //(nvarchar(350), null)
    public DateTime? ActivityEndDate { get; set; } //(datetime, null)
    public string ProblemDescription { get; set; }
    public string Description { get; set; } //(nvarchar(max), null)

    public int? ActivityLinesId { get; set; } //(int, null)
    public int? HoursLeftOnProject { get; set; } //(time(7), null)
    public int? Status { get; set; } //(nchar(10), null)
    public string  StatusName { get; set; }
    public DateTime? CreatedDate { get; set; } //(date, null)
    public string CreatedBy { get; set; } //(nvarchar(50), null)
    public bool? isActive { get; set; } //(bit, null)
    public bool? isDeleted { get; set; } //(bit, null)
    public bool? isArchived { get; set; } //(bit, null)
    public int? SOP { get; set; } //(nvarchar(50), null)
    public int? OnSite { get; set; }
    public int? Remote { get; set; }
    public int ActivityType { get; set; } //(int, null)

    public int? DepartmentId { get; set; } //(int, null)
    public string EmployeeName { get; set; } //(nvarchar(301), null)
    [ForeignKey("StaffId")]
    public int? StaffId { get; set; }
    public  virtual StaffMembers StaffMembers { get; set; }

    public ICollection<ActivityLines> ActivityLines { get; set; }


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