0

I used MVC 5 and MongoDB, I am trying to get Hidden Field value (ObjectId) in controller on form submit but getting default value(000000000000000000000000) instead of actual value (5af58cedf86bc82ab0e0f825).

Here field type is ObjectId(MongoDB.Bson Type)

Please help me I am new in MongoDB. Thanks in Advance

enter image description here

enter image description here

@using (Html.BeginForm()) {
<div class="container ">
  <div class="row">
    @Html.HiddenFor(m => m.Employee._id, new { @Value = ObjectId.Parse(Model.Employee._id.ToString()) });
    <div class="col-md-12">
      <h3 class="text-center" style="margin: 25px 0;">
        Employee Registration Form
      </h3>
      <h4 class="text-center" style="margin: 25px 0">
        <span style="color:red">
                            @if (TempData["ErrorMessage"] != null)
                            {
                                @TempData["ErrorMessage"]
                            }
                        </span>
        <span span style="color:forestgreen">
                            @if (TempData["SuccessMessage"] != null)
                            {
                                @TempData["SuccessMessage"]
                            }
                        </span>
      </h4>
      <div class="col-md-2 float-left"></div>
      <div class="col-md-8 float-left">
        <div class="form-group">
          <div class="row">
            <div class="col-md-6">
              <label>Employee First Name : </label> @Html.TextBoxFor(m => m.Employee.FirstName, new { @class = "form-control" })
            </div>
            <div class="col-md-6">
              <label>Employee Last Name : </label> @Html.TextBoxFor(m => m.Employee.LastName, new { @class = "form-control" })
            </div>
          </div>
        </div>
        <div class="form-group">
          <div class="row">
            <div class="col-md-6">
              <label>Employee Contact No : </label> @Html.TextBoxFor(m => m.Employee.ContactNumber, new { @class = "form-control" })
            </div>
            <div class="col-md-6">
              <label>Email Address : </label> @Html.TextBoxFor(m => m.Employee.Email, new { @class = "form-control" })
            </div>
          </div>
        </div>
        <div class="form-group">
          <div class="row">
            <div class="col-md-6">
              <label>Salary : </label> @Html.TextBoxFor(m => m.Employee.Salary, new { @class = "form-control" })
            </div>
            <div class="col-md-6">
              <label>Gender: </label>
              <div>
                Male @Html.RadioButtonFor(m => m.Employee.Gender, "Male") Female @Html.RadioButtonFor(m => m.Employee.Gender, "Female")
              </div>
            </div>
          </div>
        </div>
        <div class="form-group">
          <div class="row">
            <div class="col-md-6">
              <label>Designation: </label> @Html.TextBoxFor(m => m.Employee.Designation, new { @class = "form-control" })
            </div>
            <div class="col-md-6">
              <label>Address: </label> @Html.TextAreaFor(m => m.Employee.Address, new { @class = "form-control" })
            </div>
          </div>
        </div>

        <div class="form-group">
          <input type="submit" class="btn btn-default" value="Save Employee" />
          <input type="reset" class="btn btn-info" value="Cancel" />
        </div>

      </div>
      <div class="col-md-2 float-left"></div>
      <br />
      <br />
      <div class="col-md-12 float-left"></div>
      <div class="col-md-1 float-left"></div>
      <div class="col-md-10 float-left">
      </div>
      <div class="col-md-1 float-left"></div>
    </div>
  </div>
</div>
}
Parth Savadiya
  • 1,203
  • 3
  • 18
  • 40
  • My best guess is that you are messing something up with the Events. You might try to get values too early (before they have been retrieved from the postback). It is rather important that you fully understand the ASP.Net Page Lifecycle: https://msdn.microsoft.com/en-us/library/ms178472.aspx – Christopher May 14 '18 at 06:33
  • 4
    You will need to create a custom ModelBinder for BSON types (the `DefaultModelBinder` does not know how to convert you value to an `ObjectId` - refer [this answer](https://stackoverflow.com/questions/3143254/how-to-pass-objectid-from-mongodb-in-mvc-net) for examples –  May 14 '18 at 06:36
  • Thanks @StephenMuecke – Parth Savadiya May 14 '18 at 06:41

0 Answers0