问题:我想在UI中使用一个div ,我希望通过 JQuery 向其中呈现一些值,当我提交时表单我应该能够在后端中访问它。
查看:
@model ScheduleAptMV
using (Html.BeginForm())
{
////// I want a div here /////
@Html.LabelFor(model => model.FirstName })
@Html.EditorFor(model => model.FirstName)
<input type="submit" value="Make Appointment"/>
}
}
型号:
public class ScheduleAptMV
{
public string FirstName {get; set;}
}
控制器:
[HttpPost]
public ActionResult SaveDelayedPayment(ScheduleAptMV data)
{
// I want to be able to access the Div text too
}
部分解决方案1:
我添加了一个div
<div id="totalAmount"></div>
使用Jquery,我添加了类似
的内容$("#totalAmount").text("HelloFoo");
但我的问题是它与模型无关,所以如何将发送到后端。
部分解决方案2:
我可以在我的模型中创建属性,它将表示div内容,以便它获得强烈绑定。此值仅用于显示用户应该 不允许编辑它,只有它应该由Jquery代码呈现。我可以用
@Html.DisplayFor()
如下所示:
新模式:
public class ScheduleAptMV
{
public string FirstName {get; set;}
public decimal totalAmount{get; set;}
}
新视图:
<span class="myClass">
@Html.DisplayFor(model => model.totalAmount)
</span>
问题:但现在如何使用 Jquery 呈现此属性。我是否需要使用除DisplayFor
之外的其他内容。
编辑:这是DisplayFor
当前呈现的方式。
<span class="myClass">
0.00
</span>
问题:如果我关注第2条,那么如何将课程附加到DisplayFor
元素。
答案 0 :(得分:1)
解决方案1
将您的操作签名更改为
public ActionResult SaveDelayedPayment(ScheduleAptMV data, int totalAmount)
但是它必须是一个POSTable实体,例如文本框,不是 div。所以添加一个隐藏的输入:
<input type='hidden' name='totalAmount' id='totalAmount'/>
<div id='totalAmountDisplay'></div>
并相应地设定:
$("#totalAmountDisplay").text("1024");
$("#totalAmount").val(1024);
解决方案2
与解决方案1类似,您只需要一个隐藏的输入即可进行POST:
@Html.HiddenFor(m => m.totalAmount)
确保<form>
内的内容自动绑定。使用.DisplayFor
添加显示,或者您喜欢和jquery添加更新(如果需要)与上面类似。