/ / jQuery maskmoney, никаква стойност не се връща на контролера по форма submit - jquery, asp.net-mvc, бръснач

jQuery maskmoney, няма стойност, върната на контролера на формуляр submit - jquery, asp.net-mvc, бръснач

Използвам jquery-maskmoney (https://github.com/plentz/jquery-maskmoney) за поле за въвеждане на валута. Когато не използвам маската, въведената стойност се предава на контролера, когато използвам маската, получавам стойността 0.

<div class="form-group">
@Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Amount, new { htmlAttributes = new { @class = "form-control input-width-xlarge"} })
@Html.ValidationMessageFor(model => model.Amount, "", new { @class = "text-danger" })
</div>
</div>

Следното за свързване на полето:

<script>
$(function() {
$("#Amount").maskMoney();
})
</script>

Проблемът е, че когато се използва маската, стойността 0 се връща на контролера, когато не използвам маската, получавам въведената стойност.

Представеният HTML код за полето е

<input data-val="true" data-val-number="The field Amount must be a number." data-val-range="The field Amount must be between 0 and 10000000000." data-val-range-max="10000000000" data-val-range-min="0" data-val-required="The Amount field is required." htmlattributes="{ class = form-control input-width-xlarge }" id="Amount" name="Amount" type="text" value="0">

Методът на контролера е:

public ActionResult Create([Bind(Include = "ReceiptId,DonorId,Amount,CreationDate,CurrencyId,PaymentTypeId,AllocationId,LegacyAllocation,Activity,Diocese,Acknowledgement,Printed,OwnerId,LastUserId,LastUpdated,GiftAid,Notes")] CreateReceiptViewModel crvm)

Опитах да използвам EditorFor вместо TextBoxFor, същия резултат.

Отговори:

2 за отговор № 1

РЕШЕНО: Проблемът беше Сума в модела за преглед е десетична, но се връщаше низ, така че не успя да потвърди. Което има смисъл сега мисля за него :)

Решението беше да се въведе ново поле Stringнаречена DisplayAmount в модела на изгледа и я използва в изгледа. Промениха обвързването така, че да потърси DisplayAmount, а в действието си анализира това в сумата.

Моделът изглежда така:

    [Required]
[Range(0.0,10000000000)]
public Decimal Amount { get; set; }

[Required(ErrorMessage="Please supply the amount.")]
public String DisplayAmount { get; set; }

Изглед:

    <div class="form-group">
@Html.LabelFor(model => model.Amount, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.DisplayAmount, new { htmlAttributes = new { @class = "form-control input-width-xlarge"} })
@Html.ValidationMessageFor(model => model.DisplayAmount, "", new { @class = "text-danger" })
</div>
</div>

А в действието:

    public ActionResult Create([Bind(Include = "ReceiptId,DonorId,DisplayAmount,CreationDate,CurrencyId,PaymentTypeId,AllocationId,LegacyAllocation,Activity,Diocese,Acknowledgement,Printed,OwnerId,LastUserId,LastUpdated,GiftAid,Notes")] CreateReceiptViewModel crvm) {
Decimal amount;
Decimal.TryParse(crvm.DisplayAmount, out amount);

crvm.Amount = amount;