从剃须刀语句中的下拉列表中替换值中的文本

时间:2018-01-12 17:24:19

标签: javascript jquery html asp.net-mvc razor

我有一个带有一些下拉列表的HTML表单。我需要下拉列表中所选项目的值来替换另一个下拉列表中的标记。

@Html.DropDownListFor(model => model.TrainID, new SelectList(Model.TrainItems, "Value", "Text"), htmlAttributes: new { id = "train" })

@Html.DropDownListFor(model => model.ReasonID, new SelectList(Model.ReasonItems, "Value", "Text"), htmlAttributes: new { id = "reason" })

@Html.DropDownListFor(model => model.MessageID, new SelectList(Model.MessageItems, "Value", "Text"), htmlAttributes: new { id = "message" })

我需要列车的值和用户选择的原因来替换所选消息项的某些部分。

例如,所选消息会说:“由于[REASON],列车#[NUM]已被取消。对于给您带来的不便,我们深表歉意。”然后它会使用前两个下拉列表中的选定值动态填充消息到HTML表单上的文本框中:“火车#123因天气原因已被取消。我们对此给您带来的不便表示歉意。”:

@Html.EditorFor(model => model.AnnouncementText, new { htmlAttributes = new { id = "text" } })

我试图通过javascript做到这一点,没有运气:

$(function () {
    var str = document.getElementById("message").innerHTML;
    var res = str.replace("[REASON]", model.ReasonName);
    document.getElementById("text").innerHTML = res;
});

显然,string.replace方法不适用于剃刀语句,我想知道是否存在这样的方法,或者我是否采用了错误的方法。

1 个答案:

答案 0 :(得分:0)

在一点帮助下,我找到了最适合我的答案。我的第一次尝试非常接近,经过一些调整就能得到它。

days = [1,2,3,4,5,6,7]
def doomsday_func(year):
    c = str(year)[:2]
    a = (5((c % 4) + 2) % 7)
    return(days[a])

print(doomsday_func(1954))

感谢RajN的帮助!