a:6:{i:0;s:7929:"				<section id="middle">
				<div class="wrap" id="bodyFormat1">
				<div class="row1 dt columns23"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls detail_pm_15"><!--MIDDLE ROW1 COL-2 STARTS-->
				
									<div class="h1"><h1>Job openings for net software developer in pune</h1></div>
					<p class="breadcrumb ar uu small"> <a href="http://www.suggestjobconsultingservices.com/">Home</a>
					
											<b class="ffv p2px">&rsaquo;</b><a href="http://www.suggestjobconsultingservices.com/jobs-gallery.htm" title="Jobs Gallery">Jobs Gallery</a>  			
											
					<b class="ffv p2px">&rsaquo;</b> Job openings for net software developer in pune</p>
									<div class="pt10px">
				<div class="xxxlarge fw6 dif">.Net Software Developer</div>
									<p class="mt7px fw6">Pune</p>
									
				<br>
				<p class="aj mt7px">We are looking for a .Net developer to build software using languages and technologies of the .NET framework. You will create applications from scratch, configure existing systems and provide user support.<br />
In this role, you should be able to write functional code with a sharp eye for spotting defects. You should be a team player and excellent communicator. If you are also passionate about the .NET framework and software design/architecture, we’d like to meet you.<br />
Your goal will be to work with internal teams to design, develop and maintain software.<br />
Requirements<br />
Proven experience as a .NET Developer or Application Developer<br />
Familiarity with the ASP.NET framework, SQL Server and design/architectural patterns (e.g. Model-View-Controller (MVC))<br />
Knowledge of at least one of the .NET languages (e.g. C#, Visual Basic .NET) and HTML5/CSS3<br />
Familiarity with architecture styles/APIs (REST, RPC)<br />
<br />
Other Profile:<br />
Being innovative and creative <br />
Being able to communicate and present information efficiently <br />
Being able to use programming, computer software and graphic technology <br />
Stress management and multitasking <br />
Teamwork and prioritizing <br />
Meeting deadlines and setting targets <br />
Being flexible and able to resolve problems <br />
Interacting and networking with people <br />
Being able to work using own initiative <br />
<br />
Siklls required: <br />
HTML, CSS, Bootstrap, .net framework, SQL database management, Web Services, payment gateway knowledge, OOPS concept, Asp.net, C#, Server Management</p>
				
				<table class="w100 formTable bdr0 mt20px">	
				<tr>
				<td class="w195 alpha75 p5px">Experience</td>
				<td class="p5px">0 - 1 Years</td>
				</tr>			
											<tr>
							<td class="alpha75 p5px">Salary</td>
							<td class="p5px"> 1  Lac  To  2  Lac  25 Thousand  P.A.</td>
							</tr>				
											
					<tr>
					<td class="alpha75 p5px">Industry</td>
					<td class="p5px">IT Software - Application Programming / Maintenance</td>
					</tr>
									
									<tr>
					<td class="alpha75 p5px">Qualification</td>
					<td class="p5px">Professional Degree, Other Bachelor Degree</td>
					</tr>					
										<tr>
					<td class="alpha75 p5px">Key Skills</td>
					<td class="p5px">
											<span class="bdr dib p2px10px mr5px mt2px">C#.Net</span>
												<span class="bdr dib p2px10px mr5px mt2px">ASP.NET</span>
												<span class="bdr dib p2px10px mr5px mt2px">.Net Architect</span>
												<span class="bdr dib p2px10px mr5px mt2px">.NET Framework</span>
											</td>
					</tr>
									
				</table>
				</div>
				<br>
				<div class="pt20px">
				<p class="large fw6">About Company</p>
				<div class="mt10px">
				
									<table class="w100 formTable bdr0 mt5px">
											<tr>
						<td class="w195 alpha75 p5px">Email ID</td>
						<td class="p5px"><a href="mailto:sjcrecruitment19@gmail.com"> sjcrecruitment19@gmail.com </a></td>
						</tr>
										
					</table>
									
				<br />
				
									
					<div class="bdrT pt20px">
					<form name="frmvacdetail" method="post" action="enquiry-form-10009.htm">
					<input style="padding:7px 15px;" class="button b ffos" type="submit" value="APPLY NOW !" />
					<input type="hidden" name="catalog_mi" value="677365">
					<input type="hidden" name="enq_type" value="2"><input type="hidden" name="vacancy_id" value="905369"><input type="hidden" name="subject" value="Applied for .Net Software Developer">
					</form>
					</div>
			
									</div>
				</div>			
				
				<!--MIDDLE ROW1 COL-2 ENDS--> 
				</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="large fw6 alpha75 p12px bdrB">
				<h2>Jobs by Location</h2>
				</div>
				<div class="ic">
				<div class="mt10px">
									<span class="dib p5px10px c2px bdr mr7px mb7px "><a class="dif" href="jobs-in-pune.htm" title="Jobs in Pune">Pune</a> <b class="alpha50 bn small">(218)</b></span>
									</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="large fw6 alpha75 p12px bdrB">
				<h2>Jobs by Functional Area</h2>
				</div>
				<div style="padding:10px 18px;" class="ic">
									<p class="mb5px "><span class="fr">(156)</span><a href="jobs-in-application-programming-fid.htm" title="IT Software - Application Programming / Maintenance Jobs">IT Software - Application Prog...</a></p>
										<p class="mb5px "><span class="fr">(52)</span><a href="jobs-in-advertisement-marketing-fid.htm" title="Marketing / Advertising / PR / Media Planning Jobs">Marketing / Advertising / PR /...</a></p>
										<p class="mb5px "><span class="fr">(3)</span><a href="jobs-in-system-programming-fid.htm" title="IT Software - System Programming Jobs">IT Software - System Programmi...</a></p>
										<p class="mb5px "><span class="fr">(2)</span><a href="jobs-in-human-resources-fid.htm" title="HR / Recruitment / Administration / IR Jobs">HR / Recruitment / Administrat...</a></p>
										<p class="mb5px "><span class="fr">(2)</span><a href="jobs-in-web-designing-programming-fid.htm" title="IT Software - Others Jobs">IT Software - Others</a></p>
										<p class="mb5px "><span class="fr">(1)</span><a href="jobs-in-fresh-graduate-fid.htm" title="Fresher / Trainee Jobs">Fresher / Trainee</a></p>
										<p class="mb5px "><span class="fr">(1)</span><a href="jobs-in-dba-database-management-fid.htm" title="IT Software - DataBase / Datawarehousing Jobs">IT Software - DataBase / Dataw...</a></p>
										<p class="mb5px "><span class="fr">(1)</span><a href="jobs-in-accounting-tax-fid.htm" title="Accounting / Auditing / Taxation Jobs">Accounting / Auditing / Taxati...</a></p>
									
				</div>
				</div>
				</div>
				
				</div>
				<!--MIDDLE ROW1 COL-1 ENDS-->
				
				<!--MIDDLE ROW1 ENDS--> 
				</div>
				<br><br>
				</div>
				</section>
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
					<script>
	$.ajax({
	  url: "https://www.placementindia.com/job_posting_view.php",
	  type: "POST",
	  dataType: 'html',
	  data: {job_view_id: 'WGFkeHRteEF4aG1qL0h5ZHJraGtqZz09',data_type: 'RExzRmw1cmRsdlh6YkJlVUZBNnA4UT09'},
	  cache : false,
	  async: true
	  
	}).done(function(resp) {
	  //alert(resp)
	});
	</script>
	";i:1;s:81:"Job openings for net software developer in pune | Suggest Job Consulting Services";i:2;s:208:".Net Software Developer Jobs,.Net Software Developer Jobs in Pune,.Net Software Developer Vacancy in Pune,.Net Software Developer jobs in India,IT Software - Application Programming / Maintenance jobs in Pune";i:3;s:316:"Apply for .Net Software Developer Jobs in Pune India - .Net Software Developer Vacancy  in IT Software - Application Programming / Maintenance field with 0 to 1 years Work Experience, Key Skills are C#.Net,ASP.NET,.Net Architect,.NET Framework, IT Software - Application Programming / Maintenance jobs in Pune  India";i:4;s:2255:"
		<script type="application/ld+json">
		{
		  "@context": "http://schema.org",
		  "@type": "JobPosting",
		  "title": ".Net Software Developer",
		  "baseSalary": " 1  Lac  To  2  Lac  25 Thousand ",
		  "description": "We are looking for a .Net developer to build software using languages and technologies of the .NET framework. You will create applications from scratch, configure existing systems and provide user support.
In this role, you should be able to write functional code with a sharp eye for spotting defects. You should be a team player and excellent communicator. If you are also passionate about the .NET framework and software design/architecture, we’d like to meet you.
Your goal will be to work with internal teams to design, develop and maintain software.
Requirements
Proven experience as a .NET Developer or Application Developer
Familiarity with the ASP.NET framework, SQL Server and design/architectural patterns (e.g. Model-View-Controller (MVC))
Knowledge of at least one of the .NET languages (e.g. C#, Visual Basic .NET) and HTML5/CSS3
Familiarity with architecture styles/APIs (REST, RPC)

Other Profile:
Being innovative and creative 
Being able to communicate and present information efficiently 
Being able to use programming, computer software and graphic technology 
Stress management and multitasking 
Teamwork and prioritizing 
Meeting deadlines and setting targets 
Being flexible and able to resolve problems 
Interacting and networking with people 
Being able to work using own initiative 

Siklls required: 
HTML, CSS, Bootstrap, .net framework, SQL database management, Web Services, payment gateway knowledge, OOPS concept, Asp.net, C#, Server Management",
		  "educationRequirements": "Professional Degree, Other Bachelor Degree",
		  "experienceRequirements": "0 - 1 Years",
		  "industry": "IT Software - Application Programming / Maintenance",
		  "jobLocation": {
		    "@type": "Place",
		    "address": {
		      "@type": "PostalAddress",
		      "addressLocality": "Maharashtra",
		      "addressRegion": "Pune"
		    }
		  },
		 "qualifications": "Professional Degree, Other Bachelor Degree",
		     "skills": "C#.Net,ASP.NET,.Net Architect,.NET Framework"
		  }
		</script>
		";i:5;N;}