Olá Danilo,
O input type date veio no HTML5, até por isso não são todos os navegadores que suportam. Uma outra forma de fazer que funciona em todos os navegadores é com javascript usando o datepicker do JQuery UI.
Já para usar o input type date com o Razor, tem duas formas de fazer. A mais simples é colocando justamente o tipo do input da mesma forma que você passou a classe. O problema é que você também precisa formatar a data para o padrao que o tipo date entende que é de ano-mes-dia.
@Html.TextBoxFor(m => m.Data, "{0:yyyy-MM-dd}", new { @class = "form-control", @type="date" })
Só que toda vez que for usar datas teria que repetir esse código. Outra forma é você anotando a propriedade que você quer que seja uma data com a DataType
dizendo que é uma data e um DisplayFormat
para justamente passar a formatação ano-mes-dia. E depois usar o @Html.EditorFor
do Razor no cshtml, que pelas anotações ele já vai entender que é para fazer o input date no formato certo. Aqui tem um link do stackoverflow que te dá a ideia de como faz isso.