AngularJS select不支持选定的值

时间:2014-02-12 05:03:08

标签: asp.net-mvc angularjs angularjs-ng-repeat

我有一个带有VideModel的ASP.NET MVC控制器,我将其序列化为JSON并发送到客户端,同时使用AngularJS将这两者结合在一起。视图模型具有绑定到Select元素的lookup(数组)。一切正常,我可以选择一个值,将表单发布回MVC控制器并在那里获取所选值。

当我发回一个已选择值的视图模型时,未在Select元素中选择该值。我可以看到在客户端(使用Batarang)正确设置了值,但Select仍未显示为已选中。 Here是显示此内容的示例的链接。有任何想法吗?

这里是代码片段,为您提供一些想法(角度控制器没有任何代码,只是将具有默认值的新项目添加到目标数组的意思)。

MVC控制器:

public Sources {
    First,
    Second,
    Third
}

public ActionResult MyGetAction() 
{
    var vm = new MyViewModel {
       Sources = SelectListExtension.ToSelectListItem<Sources>() //Would return IEnumerable<SelectListItem> (with proper Value and Text for all enum entries)
       Destination = new List<DestinationViewModel>(); //Has int? SourceId
    };

    vm.ClientData = SerializeToJson(vm);

    return View(vm);
}

[HttpPost]
public ActionResult MyPostAction(MyViewModel model)
{
   var selectedSource = model.Destination[0].SourceId; //works fine
   model.Sources = SelectListExtension.ToSelectListItem<Sources>(); //populate the lookup again
   //model still has 1 destination with the SourceId correctly set
   return View(model);
}

My View绑定到JSON对象:

@using (Html.BeginForm())
{
   <div ng-repeat="destination in Destinations">

      <select ng-init="destination.Source = { Value: destination.SourceId }"
              ng-model="destination.Source"
              ng-options="s.Text for s in Source track by s.Value"
              ng-change="destination.SourceId = destination.Source.Value"
              name="Destinations[{{$index}}].SourceId"
              id="Destinations_{{$index}}__SourceId">
         <option value=""></option>
      </select>
   </div>

   <input type="submit">
}

0 个答案:

没有答案