There are more ways of doing this, but you have to consider to follow DRY while doing it. And also taking into consideration that your views shouldn't be too complex.
Less obvious way
Write Html extension methods (for those elements that you need) that also take a set of rights as a parameter and would render their content based on them. Like:
<%= Html.ActionLink(new PermissionRight[] { PermissionRight.Edit, PermissionRight.Create }, "Edit", ...) %>
This way you'll be able to supply all rights that can expose such functionality, and it would be generic for all views/partials... If you define your PermissionRight
enumeration as flags, you could supply them without arrays.
The usual (obvious) way
You'd either write your own base view or base controller class and expose your user (or at least data you need) directly in it. And of the correct type, so no casting would be needed.
Then just use those like (this one has base view class):
<% if (this.User.HasWritePermission) %>
<% { %>
<%= Html.ActionLink("Edit", ...) %>
<% } %>
You can see that this solution takes more lines to accomplish the same task than the first one, thus polluting your views with much more code than necessary.