ASP.NET - Asp.net with MVC Razor

Asked By suresh babu on 18-Oct-11 11:44 PM
how to write partial view in razor

   how to using drop down ,check box, ,checklist,image,file upload in Razor
smr replied to suresh babu on 19-Oct-11 12:41 AM
hi

In the MVC WebForms View Engine views have the extension .aspx and partial views .ascx. This makes it easy to distinguish between views and partial views. In the MVC Razor View Engine both views and partial views have the extension of .cshtml.

My partial view is as follows (adapted from the following link):
 
@inherits System.Web.Mvc.WebViewPage<LocaleBaseModel>
@using System.Web.UI;
 
<p>
   @Html.LabelFor(model => Model.CountryName)
  <br />
  @Html.DropDownListFor(model => Model.CountryName,null, string.Empty, new { @class = "text", accesskey="u"})
</p>
<p>
   @Html.LabelFor(model => Model.StateProvince)
  <br />
   @Html.DropDownListFor(model => Model.StateProvince, null, string.Empty, new { @class = "text", accesskey="t" })
</p>
 
 
<script type="text/javascript">
  $(function () {
    var countries = $("#CountryName");
    var statesprovinces = $("#StateProvince");
    countries.change(function () {
      statesprovinces.find('option').remove();
      var url = '@Url.Action("GetStatesProvinces", "Base")';
      $.getJSON(url, { countryId: countries.val() }, function (data) {
        $(data).each(function () {
          $("<option value=" + this.ID + ">" + this.Name + "</option>").appendTo(statesprovinces);
        });
      });
    });
  });
</script>


follow
http://stackoverflow.com/questions/5879147/razor-partial-view-not-rendering
http://stackoverflow.com/questions/3380945/razor-view-engine-how-can-i-add-partial-views
http://guyellisrocks.com/coding/asp-net-mvc3-razor-notes-partial-views/
Reena Jain replied to suresh babu on 19-Oct-11 01:36 AM
hi,

ASP.NET MVC 3 ships with a new view-engine option called “Razor” (in addition to continuing to support/enhance the existing .aspx view engine).

You can learn more about Razor, and the syntax it supports from my http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx blog post.  If you haven’t read that post yet, take a few minutes and read it now (since the rest of this post will assume you have read it). Once you’ve read the http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx post, also read my http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx post and look over the ASP.NET MVC 3 Razor sample I included in it.


I found a great post regarding this which i would like to share with you

http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx
Suchit shah replied to suresh babu on 19-Oct-11 01:56 AM
DropDown List


As usual you could start by defining a view model:

public class YearsViewModel 
{ 
    public string Year { get; set; } 
    public IEnumerable<SelectListItem> Years 
    { 
        get 
        { 
            return new SelectList( 
                Enumerable.Range(1900, 112) 
                .OrderByDescending(year => year) 
                .Select(year => new SelectListItem 
                { 
                    Value = year.ToString(), 
                    Text = year.ToString() 
                } 
            ), "Value", "Text"); 
        } 
    } 
} 

Then a controller:

public class YearsController : Controller 
{ 
    public ActionResult Index() 
    { 
        return View(new YearsViewModel()); 
    } 
    [HttpPost] 
    public ActionResult Index(int year) 
    { 
        // TODO: do something with the selected year 
        return new EmptyResult(); 
    } 
} 

and a corresponding view for the index action:

@model SomeAppName.Models.YearsViewModel 
@{ 
    Layout = null; 
} 
@Html.DropDownListFor(x => x.Year, Model.Years) 

And finally inside your _Layout.cshtml you could use this controller:

<div id="selectyear">@Html.Action("index", "years")</div> 

and attach a corresponding script which would send an AJAX request when the value changes:

$(function () { 
    $('#selectyear select').change(function () { 
        $.post('@Url.Action("index", "years")', { year: $(this).val() }, function (result) { 
        }); 
    }); 
}); 

Check Box

@Html.CheckBox("ChxName",true) 

and I got the following result;

<input checked="checked" id="ChxName" name="ChxName" type="checkbox" value="true" /> 
<input name="ChxName" type="hidden" value="false" /> 

Image

You can create an extension method for HtmlHelper to simplify the code in your CSHTML file. You could replace your tags with a method like this:

// Sample usage in CSHTML
@Html.ActionImage("Edit", new { id = MyId }, "~/Content/Images/Image.bmp", "Edit")

Here is a sample extension method for the code above:

// Extension method
public static MvcHtmlString ActionImage(this HtmlHelper html, string action, object routeValues, string imagePath, string alt)
{
    var url = new UrlHelper(html.ViewContext.RequestContext);
    // build the <img> tag
    var imgBuilder = new TagBuilder("img");
    imgBuilder.MergeAttribute("src", url.Content(imagePath));
    imgBuilder.MergeAttribute("alt", alt);
    string imgHtml = imgBuilder.ToString(TagRenderMode.SelfClosing);
    // build the <a> tag
    var anchorBuilder = new TagBuilder("a");
    anchorBuilder.MergeAttribute("href", url.Action(action, routeValues));
    anchorBuilder.InnerHtml = imgHtml; // include the <img> tag inside
    string anchorHtml = anchorBuilder.ToString(TagRenderMode.Normal);
    return MvcHtmlString.Create(anchorHtml);
}


File Upload


There isn't an html helper for file inputs, but what is wrong with just doing

@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) { 
    <input type='file' name='blah' id='blah' /> 
} 

Anoop S replied to suresh babu on 19-Oct-11 02:52 AM
ASP.NET MVC 3 introduces the new view engine Razor, which was conceived to simplify the current syntax used in ASP.NET web pages. In this lab, you will learn how to create Razor views inside an MVC solution.
refer this for more details
http://msdn.microsoft.com/en-us/gg618477