Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 控制器返回数组的内容,但在我看来,我只得到类型?MVC_Javascript_Asp.net Mvc_Razor_Viewmodel_Tag It - Fatal编程技术网

Javascript 控制器返回数组的内容,但在我看来,我只得到类型?MVC

Javascript 控制器返回数组的内容,但在我看来,我只得到类型?MVC,javascript,asp.net-mvc,razor,viewmodel,tag-it,Javascript,Asp.net Mvc,Razor,Viewmodel,Tag It,我有一个返回viewModel的控制器 该viewModel有一个名为Users的属性,它是系统中当前拥有帐户的所有用户名的数组。这用于jquery标记插件 Users属性正确地向视图发送数组 但是当我在视图中使用@Model.Users时,我只得到了ie类型系统字符串[] 我猜这是一个简单得可笑的问题 控制器 public virtual ActionResult Create(int id) { var viewModel = new AttendeeViewMod

我有一个返回viewModel的控制器

该viewModel有一个名为Users的属性,它是系统中当前拥有帐户的所有用户名的数组。这用于jquery标记插件

Users属性正确地向视图发送数组

但是当我在视图中使用
@Model.Users
时,我只得到了ie类型<代码>系统字符串[]

我猜这是一个简单得可笑的问题

控制器

public virtual ActionResult Create(int id)
    {

        var viewModel = new AttendeeViewModel();

        var data = viewModel.GetMembershipUserList() ;
        viewModel.MeetingID = id;

        viewModel.Users = data.ToArray();

        return View(viewModel);
    } 
视图模型

public class AttendeeViewModel
{

    public int AttendeeId { get; set; }
    public string Name { get; set; }
    public int MeetingID { get; set; }
    public string[] Users { get; set; }

    public List<string> GetMembershipUserList()
    {
        List<string> userNames = new List<string>();
        foreach (MembershipUser user in Membership.GetAllUsers())
        {
            userNames.Add(user.UserName);
        }

        return userNames;

    }
}
公共类参与者视图模型
{
公共int AttendeeId{get;set;}
公共字符串名称{get;set;}
public int MeetingID{get;set;}
公共字符串[]用户{get;set;}
公共列表GetMembershipUserList()
{
列表用户名=新列表();
foreach(Membership.GetAllUsers()中的MembershipUser用户)
{
userNames.Add(user.UserName);
}
返回用户名;
}
}
查看使用情况

<script type="text/javascript">

    var tags = @Model.Users

    $(document).ready(function () { $("#mytags").tagit({ availableTags: tags }); });


</script>

var tags=@Model.Users
$(document.ready(function(){$(“#mytags”).tagit({availableTags:tags});});

@Model.Users
相当于将
Model.Users.ToString()
转储到视图中。对于特定用途,需要将其呈现为JavaScript数组。C#字符串数组不知道如何执行此操作。比如:

 var tags = [ @( string.Join("," Model.Users.Select(s => "'" + s + "'").ToArray()) ) ];

虽然从ViewModel执行此操作可能更好,只需使用
Model.UsersAsJavaScriptArray
或类似的东西。如果我经常这样做,我可能会为HtmlHelper创建一个扩展方法,并像Matt在尝试使用或@it's to.ToString()输出内容时所说的那样执行
@Html.AsJavaScriptArray(Model.Users)

相反,你可以试试

ViewModel.UsersJson = new JavascriptSerializer().Serialize(data.ToArray());
甚至只是序列化你需要的东西

ViewModel.UsersJson = new JavascriptSerializer().Serialize(data.ToArray().Select(u => new { Username = u.Username, FirstName = u.FirstName });


关于最后一点,你在网上的任何地方都发现过吗?我不懒惰,只是时间太差了!序列化的结果是“[“DennisLeary”、“BobSaget”、“BillHicks”]”;如何让JavascriptSerializer转义引号?
var tags = @Model.UsersJson