7

我有一个问题How to use javascript variables in C# and vise versa:我有这个Model传递给视图:

public List<Tache> Get_List_Tache()
{
    Equipe _equipe = new Equipe();
    List<Tache> liste_initiale = _equipe.Get_List_tache();
    return liste_initiale;
}

这是一个对象列表Tache,我想在其中使用它的三个字段Tache_descriptionBegin_dateEnd_date

在我的 JavaScript 代码中,我有这个函数,它工作正常:

       <script>

        $(document).ready(function () {
            var date = new Date();
            var d = date.getDate();
            var m = date.getMonth();
            var y = date.getFullYear();

            $('#calendar').fullCalendar({
                theme: true,
                header: {left: 'prev,next today',center: 'title',right: 'month,agendaWeek,agendaDay'},
                editable: true,
                events: [
                         @foreach (var m in Model.Get_List_Tache())
                          {
                        @:{title : @m.Tache_description , start: @m.Begin_date , end :  @m.Begin_date }
                          }
                        ]

                });
                                        });

</script>

数组的值events只是为了测试,我需要eventsModel. 对于像这样的每个元素title = Tache_descriptionstart = Begin_dateend = End_date

那么我该怎么做这个任务呢?有什么建议么?

4

6 回答 6

3

尝试这个,

foreach (var item in YourList)
{
    events: [{ title: '@item.title', start: '@item.start', end: '@item.end'}]
}

因此,在此代码中,只需替换名称您的模型实体。

于 2013-07-16T08:24:01.613 回答
3

在 javascript 中创建一个 foreach razor 循环:

var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
    theme: true,
    header: {left: 'prev,next today',center: 'title',right: 'month,agendaWeek,agendaDay'},
    editable: true,
    events: [
    @
    {
      bool isFirst = true;
    }
    @foreach(var m in Model)
    {
        if(!isFirst)
        {
          @:,
        }

        @:{title: @m.Tache_description, ...<other properties here>}

        isFirst = false;
    }
    ]
});
于 2013-07-16T08:30:56.747 回答
2

对于标题,您可以执行 title = "@Tache_description"

不确定 Begin_date 和 End_date 的格式/类型,您可能需要一些函数将日期读取为 javascript 格式。应该不会那么难。

循环遍历每个元素并将元素添加到事件数组中。这有点像...

events = new Array()
@foreach(tache in list){
    item = { blah : blah, blah : blah };
    events.push(item);
}

对于此 c# 列表中的每个 c# 项,编写这些 javascript 行。您最终可能会得到一个很长的 javascript 代码块,但它应该可以解决问题。上面是伪代码。

于 2013-07-16T08:29:29.350 回答
2

要添加到 Darin 的答案:如果您需要外部 JavaScript 文件中的服务器端变量,请查看此博客文章:使用部分 Razor 视图生成外部 JavaScript 文件

于 2013-07-16T08:39:01.113 回答
1

1:如果您的模型需要列表,Tache那么您将拥有可以操作的整个列表。

2:您可以通过调用您的操作来使用 jquery ajax 作为 json 数据获取数据Get_List_Tache()

于 2013-07-16T08:22:14.367 回答
0

假设此 javascript 在您的页面中是内联的,您可以执行以下操作:

@model IList<Tache>
<script type="text/javascript">
    var events = @Html.Raw(Json.Encode(Model.Select(x => new { title = x.Description, start = x.Begin.ToString("o"), end = x.End.ToString("o") })));

    $('#calendar').fullCalendar({
        theme: true,
        header: { 
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        editable: true,
        events: events
    });
</script>

此示例假设您的 Tache 模型具有属性Description和:BeginEnd

public class Tache
{
    public string Description { get; set; }
    public DateTime Begin { get; set; }
    public DateTime End { get; set; }
}

如果此脚本位于单独的 javascript 文件中,您仍然可以events在视图中设置一个全局变量,稍后您的脚本将使用该变量。或者,您可以使用 AJAX 调用获取此模型。

于 2013-07-16T08:25:20.867 回答