将模型中的值作为函数中的参数发送

时间:2019-05-15 10:47:21

标签: javascript asp.net-mvc razor

我有一个带有GridMVC和两个按钮的视图,其中正在显示模型的几个参数,而按钮则是编辑或删除该行中的项目。

@Html.Grid(Model).Named("eventsGrid").Columns(columns =>
{
    columns.Add(model => model.Summary)
        .Titled("Nombre");
    columns.Add(model => model.Description)
        .Titled("Descripción");
    columns.Add(model => model.StartDate)
        .Titled("Fecha Inicio");
    columns.Add(model => model.EndDate)
        .Titled("Fecha Fin");
    columns.Add()
        .Sanitized(false)
        .Encoded(false)
        .SetWidth(30)
        .RenderValueAs(model => (@Html.ActionLink("Editar", "EditEvent", "Home", new { eventId = model.EventID, calendarId = model.CalendarID }, new { @class = "btn btn-default" }).ToHtmlString()));
    columns.Add()
       .Sanitized(false)
       .Encoded(false)
       .SetWidth(30)
    .RenderValueAs(model => (@Html.ActionLink("Borrar", "Delete", "Home", new { eventId = model.EventID, calendarId = model.CalendarID }, new {@class = "btn btn-default"}).ToHtmlString()));

我想做的是,当我单击Delete(删除)按钮时,会出现一条警报,确认您要删除该项目,因此我在.js文件中做了此功能:

function confirmDelete(EventID, CalendarID) {
    if (confirm('¿Desea borrar este evento?'))
    {
        $.ajax({
            url: '@Url.Action("Delete","Home")',
            data: { eventId: EventID, calendarId: CalendarID }
        })
    } else {
        // Do nothing!
    }
}

我将其更改为如下形式:

.RenderValueAs(model => @<button onclick="confirmDelete('model.EventID','model.CalendarID')" class='btn btn-default'>Borrar</button>);

但是这会使函数中的值按字面意思是model.EventID和model.CalendarID,并且我不能使用@model.EventID,因为它已经在@中。我还尝试了How to pass a model field to a Javascript function in a view?的答案:

.RenderValueAs(model => @<button onclick="confirmDelete('" + model.EventID "')" class='btn btn-default'>Borrar</button>);

但这甚至没有调用该函数。

哪种格式可以正确地编写模型参数?

1 个答案:

答案 0 :(得分:0)

您可以使用HtmlString:

.RenderValueAs(model => new HtmlString("<button onclick='confirmDelete(" + model.EventID + ", " + model.CalendarID + ")' class='btn btn-default'>Borrar</button>"));