I'm trying to create a tagging system for my project. I need the pass a string (for ex: "test1, test2, 开发者_JAVA百科test3") which will be binded to an entity as a list.
I'm using EF and my view inherits an entity, defined in EF. Without creating a view model, is it possible to do that?
Quite honestly view models is the way to go here.
But because you asked I will try to answer. IIRC EF models are partial classes, meaning that you could add properties to them, like this:
public partial class MyEFModel
{
    public IEnumerable<string> List
    {
        get
        {
            return SomeStringProperty.Split(',');
        }
        set
        {
            SomeStringProperty = string.Join(",", value.ToArray());
        }
    }
}
Another way to achieve this is to write a custom model binder, like this:
public class MyBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (value != null)
        {
            return value.AttemptedValue.Split(',');
        }
        return base.BindModel(controllerContext, bindingContext);
    }
}
public class HomeController : Controller
{
    public ActionResult Index(
        [ModelBinder(typeof(MyBinder))] IEnumerable<string> values
    )
    {
        return View();
    }
}
and then /home/index?values=val1,val2,val3 should bind correctly to the list.
There are couple of ways to achieve this:
- Custom Action Filter
- Custom Model Binder
These implementations can be found here:
Is it possible to change the querystring variable in ASP.NET MVC path before it hits the controller?
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论