6

I am using ASP.NET MVC with AngularJs. I am new to AngularJs, I am trying to create a form that uses angularjs.

So to start with I have a login form which asks for username and password.

The username using Html.TextBoxFor as shown below

@Html.TextBoxFor(m => m.UserName, new { ng-model="user.name" })

But the ide shows the ng-model as an error in red. and gives an error when run with this change.

Error message

account/login - c:\SVN HOME\ABC-SelfServe\src\ABC\Web\Views\Account\Login.cshtml(23): error CS0746: Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.

Till now whenever I had to include html attributes I used to do like this and it used to work. What syntax do I used to include ng-.... angular attributes with razor TextBoxFor ?

1 Answer 1

19

The - in new { ng-model="user.name" } is not valid C#. Change it to ng_model and MVC will convert the underscore to a dash on output.

Sign up to request clarification or add additional context in comments.

4 Comments

razor converts every _ to - in the html attributes of Helper?
Yes it worked. Thank you. I realized there no point in using Html.TextboxFor or similar razor helper when using angular. I am now using plain html with angular. Thanks again.
Yes. It's a shortcut as underscores are actually not valid in attributes. Can also solve this by using an overload of the helper that takes a Dictionary instead of an object.
"-", "_" and ":" in attributes are all normalized by angular. They are treated as pascal case "markers". my_attr, my-attr and my:attr are all normalized to myAttr. But angular does not change the html of the attribute.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.