Quantcast
Channel: ASP.NET Core
Viewing all articles
Browse latest Browse all 9386

Bind certain properties of the navigation properties inside my action method

$
0
0

I have the following 2 model classes:-

 public Submission()
        {
            SubmissionQuestionSubmission = new HashSet<SubmissionQuestionSubmission>();
        }

        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Npi { get; set; }
        public bool Independent { get; set; }
        public string Comment { get; set; }

        public virtual ICollection<SubmissionQuestionSubmission> SubmissionQuestionSubmission { get; set; }
    }


public partial class SubmissionQuestionSubmission
    {
        public int SubmissionQuestionId { get; set; }
        public int SubmissionId { get; set; }
        public string Answer { get; set; }

        public virtual Submission Submission { get; set; }
    }

and i created the following view model:-

public class SubmissionCreate
    {
        public Submission Submission {set; get;}
        public IList<SubmissionQuestion> SubmissionQuestion { set; get; }

        public IList<SubmissionQuestionSubmission> SubmissionQuestionSubmission { set; get; }

    }

then inside my view i only need to submit back the following fields:-

@model LandingPageFinal3.ViewModels.SubmissionCreate<form asp-action="Create"><div asp-validation-summary="ModelOnly" class="text-danger"></div><div class="form-group"><label asp-for="Submission.FirstName" class="control-label"></label><input asp-for="Submission.FirstName" class="form-control" /><span asp-validation-for="Submission.FirstName" class="text-danger"></span></div><div class="form-group"><label asp-for="Submission.LastName" class="control-label"></label><input asp-for="Submission.LastName" class="form-control" /><span asp-validation-for="Submission.LastName" class="text-danger"></span></div><div class="form-group"><label asp-for="Submission.Npi" class="control-label"></label><input asp-for="Submission.Npi" class="form-control" /><span asp-validation-for="Submission.Npi" class="text-danger"></span></div><div class="form-group form-check"><label class="form-check-label"><input class="form-check-input" asp-for="Submission.Independent" /> @Html.DisplayNameFor(model => model.Submission.Independent)</label></div><div class="form-group"><label asp-for="Submission.Comment" class="control-label"></label><textarea asp-for="Submission.Comment" class="form-control"></textarea><span asp-validation-for="Submission.Comment" class="text-danger"></span></div><div id="additionalInfo">
                    @for (var i = 0; i < Model.SubmissionQuestion.Count(); i++)
                    {<label>@Model.SubmissionQuestion[i].Question</label><br /><input asp-for="@Model.SubmissionQuestion[i].Question" hidden /><textarea asp-for="@Model.SubmissionQuestionSubmission[i].Answer" class="form-control"></textarea><input asp-for="@Model.SubmissionQuestionSubmission[i].SubmissionQuestionId" hidden /><br />
                    }</div>

so i define the following binding inside my post action method, to only bind the fields inside my view, as follow:-

public async Task<IActionResult> Create([Bind(Submission.FirstName,Submission.LastName,Submission.Npi,Submission.Independent" +"Submission.Comment,SubmissionQuestionSubmission.Answer,SubmissionQuestionSubmission.SubmissionQuestionId")] SubmissionCreate sc )
        {

but the sc.Submission and the sc.SubmissionQuestionSubmission will be null inside my action method... so not sure what is the minimum binding i should define?


Viewing all articles
Browse latest Browse all 9386

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>