0
votes

I'm trying to post back from a strongly typed view to my controller.

the problem is there are a couple of fields in the model that i dont want to allow the user to edit. ideally i just want to display them as labels but when i do that they're null when posted...

here's the relevant view code: this looks how i want it to look i.e. firstname and lastname are labels

 <td width="75px"><%: Html.DisplayFor(model=>model.FirstName, new{disabled="true"}) %></td>
          <td width="75px"><%: Html.DisplayFor(model => model.LastName)%></td>
          <td width="100px"><%: Html.LabelFor(model => model.EmailAddress) %></td>
          <td width="75px"><%: Html.TextBoxFor(model => model.EmailAddress) %></td>
          <td><%: Html.ValidationMessageFor(model => model.EmailAddress) %></td>

Model looks like this:

public class PersonModel { [Required] [DisplayName("First Name")] public string FirstName { get; set; }

    [Required]
    [DisplayName("Last Name")]
    public string LastName { get; set; }

    [DisplayName("Email Address")]
    public string EmailAddress { get; set; }

}

the controller looks like this:

[HttpPost] public ActionResult RsvpToInvitation(PersonModel submittedRsvp) {...}

I've stripped a fair amount of code out of all of these... basically my question is how can i display a model property as a label and still post it back to the controller?

2

2 Answers

2
votes

Have you tried storing the values with a Html.Hidden helper?

2
votes

You can make them hidden fields in your view.

<%: Html.Hidden("LastName", Model.LastName) %>
<%: Html.Hidden("EmailAddress ", Model.EmailAddress) %>