You can use div in the front-end for hide or show controls within your page, for posting data to the controller you can use hidden fields which are never visible.
@using (Html.BeginForm("ControllerAction", "ControllerName", FormMethod.Post, new { @class "form-horizontal container" }))
{
@Html.TextBoxFor(x => x.ModelProperty,
{
new @type = "hidden"
})
<input type="hidden" class="form-control" name="FieldName" id="FieldID" value="@Model.PropertyName" />
<input type="submit" class="btn btn-success right" value="Submit" id="btnSubmit">
}
In this way the hidden fields will be submitted to controller along with other fields.
Note: you can also post data from the form which are not bounded to the model, then you need to send the field names to the controller to grab the data.
Hope this will help.