Вы находитесь на странице: 1из 49

‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.

Net‬‬ ‫‪4‬‬

‫‪ ‬ﻣﻌﺮﻓﻲ ‪MVC.NET‬‬

‫‪ MVC.NET‬ﯾﮏ ﺗﮑﻨﻮﻟﻮژی ﺟﺪﯾﺪ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﺟﻬﺖ ﺭﺍﻩ ﺍﻧﺪﺍﺯی ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﺗﺤﺖ ﻭﺏ ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﺯﻣﺎﻥ ﻧﮕﺎﺭﺵ ﺍﯾﻦ ﻣﻘﺎﻟﻪ ﻭﺭژﻥ‬
‫‪ ٢‬ﺁﻥ ﻣﻮﺟﻮﺩ ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﮐﻪ ﺩﻗﻴﻘﺎً ﻫﻤﻴﻦ ﺍﻣﺮﻭﺯ ﻧﺴﺨﻪ ‪ ٣‬ﺁﻥ ﺭﯾﻠﻴﺰ ﺷﺪ‪.‬‬

‫‪ ASP.NET MVC‬ﭼﺎﺭﭼﻮﺏ ﺟﺪﯾﺪﯾﺴﺖ ﮐﻪ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﮐﺎﺭﺑﺮﺩی ﺗﺤﺖ ﻭﺏ‪ ،‬ﻧﮕﻬﺪﺍﺷﺖ ﭘﺬﯾﺮی ﻭ ﺁﺯﻣﻮﻥ ﭘﺬﯾﺮی ﺑﺎﻻﯾﯽ ﺭﺍ ﺑﻪ‬
‫ﺍﺭﻣﻐﺎﻥ ﺁﻭﺭﺩﻩ ﺍﺳﺖ ﮐﻪ ﺍﯾﻦ ﻣﻬﻢ ﺗﻮﺳﻂ ﺍﻟﮕﻮی ‪ Model – View – Controller‬ﻣﺤﻘﻖ ﻣﯽ ﺷﻮﺩ‪ .‬ﺍﯾﻦ ﻣﺪﻝ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﺭﺍ‬
‫ﺗﺸﻮﯾﻖ ﺑﻪ ﺟﺪﺍ ﺳﺎﺯی ﺳﻴﺴﺘﻤﺎﺗﻴﮏ ﻗﺴﻤﺘﻬﺎی ‪ User Interface‬ﻭ ﻗﺴﻤﺘﻬﺎی ﻣﺮﺑﻮﻁ ﺑﻪ ﮐﻨﺘﺮﻝ ﺩﺍﺩﻩ ﻫﺎی ﻭﺍﺭﺩ ﺷﺪﻩ ﺗﻮﺳﻂ‬
‫ﮐﺎﺭﺑﺮ ﻭ ﻫﻤﭽﻨﻴﻦ ﻗﺴﻤﺘﻬﺎی ﻣﺮﺑﻮﻁ ﺑﻪ ﺍﺭﺗﺒﺎﻁ ﻭ ﺗﺮﺍﮐﻨﺶ ﺑﺎ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ﻣﯽ ﮐﻨﺪ‪.‬‬

‫‪ ‬ﺩﺭ ﺍﻳﻦ ﻛﺘﺎﺏ ﻣﻲ ﺧﻮﺍﻧﻴﺪ‪:‬‬


‫‪U‬‬

‫ﺍﯾﻦ ﮐﺘﺎﺏ ﺍﺯ ﺩﻭ ﺑﺨﺶ ﺗﺸﮑﻴﻞ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﺩﺭ ﺑﺨﺶ ﺍﻭﻝ ﺷﻤﺎ ﺭﺍ ﺑﺎ ﺍﯾﻦ ﺗﮑﺘﻮﻟﻮژی ﺁﺷﻨﺎ ﻣﯽ ﮐﻨﻢ ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ‪ :‬ﮐﺎﺭ ﺑﺎ‬
‫ﮐﻨﺘﺮﻟﺮ ﻫﺎ‪ ،‬ﮐﺸﻴﻨﮓ‪ ،‬ﺍﻋﺘﺒﺎﺭﺳﻨﺞ ﻫﺎ ﻭ ‪ . ...‬ﺩﺭ ﺑﺨﺶ ﺩﻭﻡ ﺍﯾﻦ ﮐﺘﺎﺏ ﺑﺎ ﺗﻮﺟﻪ ﺁﻣﻮﺯﻩ ﻫﺎﯾﯽ ﮐﻪ ﺩﺭ ﺑﺨﺶ ﺍﻭﻝ ﺩﺍﺭﯾﻢ ﺑﻪ ﺭﺍﻩ ﺍﻧﺪﺍﺯی‬
‫ﯾﮏ ﺳﺎﯾﺖ ﺑﺎ ﺍﻣﮑﺎﻧﺎﺕ ﻣﺘﻔﺎﻭﺕ ﺍﺯﺟﻤﻠﻪ ﻓﺮﻭﺷﮕﺎﻩ ﺍﻟﮑﺘﺮﻭﻧﻴﮑﯽ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪.‬‬

‫ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺩﺭ ﺻﻔﺤﻪ ‪ ٣‬ﻫﻤﻴﻦ ﮐﺘﺎﺏ ﮔﻔﺘﻢ ﺳﻌﯽ ﻣﯽ ﮐﻨﻢ ﺗﺎ ﮐﺎﺭ ﺭﺍ ﺭﺍﺣﺖ ﮐﻨﻢ‪ ،‬ﯾﻌﻨﯽ ﺍﮔﺮ ﮐﺴﯽ ﻣﺴﺘﻘﻴﻢ ﺑﻪ ﺑﺨﺶ ﺩﻭﻡ ﺍﯾﻦ‬
‫ﮐﺘﺎﺏ ﺑﺮﻭﺩ ﺑﺪﻭﻥ ﻫﻴﭻ ﻣﺸﮑﻠﯽ ﺍﺯ ﺁﻥ ﺳﺮ ﺩﺭ ﺑﻴﺎﻭﺭﺩ ﻭ ‪...‬‬

‫‪ ‬ﻳﻚ ﺧﻮﺍﻫﺶ‪:‬‬ ‫‪U‬‬

‫ﺑﻪ ﻋﻨﻮﺍﻥ ﺑﺮﺍﺩﺭ ﮐﻮﭼﮑﺘﺮ ﺷﻤﺎ ﺍﺯ ﺷﻤﺎ ﺧﻮﺍﻫﺶ ﻣﯽ ﮐﻨﻢ ﺍﮔﺮ ﻭﺍﻗﻌﺎً ﻋﻼﻓﻪ ﻣﻨﺪﯾﺪ ﺗﺎ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﺣﺮﻓﻪ ﺍی ﺑﺸﻮﯾﺪ ﺍﻭﻝ ﺑﺮﻭﯾﺪ‬
‫ﻭ ﺍﻟﻔﺒﺎی ﺁﻥ ﺭﺍ ﯾﺎﺩ ﺑﮕﻴﺮﯾﺪ‪...‬‬

‫ﺷﻤﺎ ﺑﺮﺍی ﺍﯾﻨﮑﻪ ﺍﯾﻦ ﮐﺘﺎﺏ ﺭﺍ ﺑﻬﺘﺮ ﺩﺭک ﮐﻨﻴﺪ ﻣﯽ ﺑﺎﯾﺴﺖ ﺑﺎ ﻣﺒﺎﺣﺚ ﺯﯾﺮ ﺁﺷﻨﺎﯾﯽ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ‪:‬‬

‫‪HTML / CSS / ASP.Net / JQuery / C#.Net or VB.Net / LINQ‬‬

‫ﺍﻟﺒﺘﻪ ﺗﻤﺎﻣﯽ ﻣﺒﺎﺣﺚ ﺭﺍ ﺗﺎ ﺣﺪﻭﺩی ﮐﻪ ﻻﺯﻡ ﺑﺎﺷﺪ ﺩﺭ ﻣﻘﻄﻊ ﻣﻨﺎﺳﺐ ﺩﺭ ﺍﯾﻦ ﮐﺘﺎﺏ ﺗﻮﺿﻴﺢ ﻣﯽ ﺩﻫﻢ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﻨﺪﻩ ﺑﺎ ‪ C#‬ﮐﺎﺭ‬
‫ﻣﯽ ﮐﻨﻢ ﻭﻟﯽ ﺩﺭ ﻧﻬﺎﯾﺖ ) ﺁﺧﺮ ﭘﺮﻭژﻩ ( ﮐﺪﻫﺎی ‪ VB.net‬ﺭﺍ ﻫﻢ ﺍﻧﺘﺸﺎﺭ ﻣﯽ ﺩﻫﻢ‪.‬‬

‫‪ ‬ﻧﻴﺎﺯﻣﻨﺪﻩ ﻫﺎ‬
‫‪U‬‬

‫ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﻫﻤﻪ ﺷﻤﺎ ﻋﺰﯾﺰﺍﻥ ﻣﯽ ﺩﺍﻧﻴﺪ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ‪ MVC.NET‬ﺑﻪ ﯾﮑﺴﺮی ﺍﺑﺰﺍﺭ ﻧﻴﺎﺯ ﺩﺍﺭﯾﻢ ﮐﻪ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ‪:‬‬

‫•‬ ‫‪Microsoft .Net Framework 3.5 or Up‬‬


‫•‬ ‫‪Microsoft ASP.Net MVC 1.0 or Up‬‬
‫•‬ ‫‪Microsoft Visual Web Developer 2008 Service pack 1 or Visual Studio 2008 Service pack 1‬‬
‫•‬ ‫ﮐﻪ ﻫﻤﺮﺍﻩ ﺑﺴﺘﻪ ﻫﺎی ﻣﻮﺭﺩ ﺳﻮﻡ ﻋﺮﺿﻪ ﻣﯽ ﺷﻮﺩ ‪SQL Server Express :‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪5‬‬

‫ﺩﺭ ﺍﻳﻦ ﺑﺨﺶ ﻣﻲ ﺧﻮﺍﻧﻴﺪ‬

‫* ﻧﺼﺐ ﻭ ﺭﺍﻩ ﺍﻧﺪﺍﺯی‬

‫ﻓﺼﻞ ﺍﻭﻝ‬
‫* ﺁﺷﻨﺎﯾﯽ ﺑﺎ ﺩﺍﺕ ﻧﺖ‬

‫* ﺁﺷﻨﺎﯾﯽ ﺑﺎ ‪MVC‬‬

‫* ﻣﻌﻤﺎﺭی ‪MVC‬‬

‫* ﻭ ‪...‬‬

‫ﺑﺨﺶ ﺍﻭﻝ‬

‫ﻭﺭﻭﺩ ﺑﻪ ‪MVC.NET‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪6‬‬

‫ﺩﺭ ﺍﯾﻦ ﻓﺼﻞ ﻣﯽ ﺧﻮﺍﻫﻢ ﺷﻤﺎ ﺭﺍ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ‪ MVC‬ﺁﻣﺎﺩﻩ ﮐﻨﻢ ﻫﻤﭽﻨﻴﻦ ﯾﮏ ﭘﻴﺶ ﻧﻤﺎﯾﺸﯽ ﺍﺯ ‪ asp.net mvc‬ﺑﻪ ﺷﻤﺎ‬
‫ﻣﻴﺪﻫﻢ‪ .‬ﻫﺪﻑ ﺍﺯ ﺍﯾﻦ ﺑﺨﺶ ﻃﺮﺡ ﺭﯾﺰی ﻧﻘﺸﻪ ﺭﺍﻩ ﻭ ﺁﻣﺎﺩﻩ ﺳﺎﺯی ﺷﻤﺎ ﺍﺳﺖ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺷﻤﺎ ﺭﺍ ﺑﺎ ﺗﮑﻨﻮﻟﻮژی ﺩﺍﺕ ﻧﺖ ﻓﺮﯾﻢ‬
‫ﻭﺭک ﺁﺷﻨﺎ ﻣﯽ ﮐﻨﻢ‪ .‬ﺗﮑﻨﻮﻟﻮژی ﮐﻪ ) ﺍﻟﺒﺘﻪ ﺍﺯ ﺩﯾﺪ ﺑﻨﺪﻩ ( ﺗﻤﺎﻣﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﺭﺍ ﻣﺪﯾﻮﻥ ﺑﻴﻞ ﮔﻴﺘﺲ ﻣﺤﺘﺮﻡ ﻭ ﺷﺮﮐﺖ ﺑﺰﺭﮔﺶ‬
‫ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫ﺍﺯ‬ ‫ﻧﻤﺎﯾﺸﯽ‬ ‫ﺩﺭ ﻧﻬﺎﯾﺖ ﺩﺭ ﻣﻮﺭﺩ ﻣﻌﻤﺎﺭی ‪ ASP.Net MVC‬ﺑﻪ ﺑﺤﺚ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺷﻤﺎ ﺭﺍ ﺁﻣﺎﺩﻩ ﮐﻨﻢ ﺑﺮﺍی ﭘﻴﺶ‬
‫ﻗﺴﻤﺖ ﻫﺎی ﻣﺨﺘﻠﻒ ‪ MVC Application‬ﮐﻪ ﺷﺎﻣﻞ ﻣﺪﻝ‪ ،‬ﻧﻤﺎﯾﺸﮕﺮ ﻭ ﮐﻨﺘﺮﻟﺮ ‪ .‬ﻭ ﺑﺎ ﯾﮑﺪﯾﮕﺮ ﺑﻪ ﺳﺎﺧﺖ ﺍﻭﻟﻴﻦ ﭘﺮﻭژﻩ ﺩﺭ ‪ MVC‬ﻭ‬
‫ﺑﺮﺭﺳﯽ ﮐﺪﻫﺎی ﺁﻥ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ‪.‬‬

‫‪ ‬ﺩﺍﻧﻠﻮﺩ ﻭ ﻧﺼﺐ ﻧﺮﻡ ﺍﻓﺰﺍﺭ‬

‫ﺍﯾﻦ ﻗﺴﻤﺖ ﺭﺍ ﭼﻮﻥ ﻫﻤﻪ ﺷﻤﺎ ﻋﺰﯾﺰﺍﻥ ﺍﺳﺘﺎﺩ ﻫﺴﺘﻴﺪ ﻣﯽ ﮔﺬﺍﺭﻡ ﺑﺮﺍی ﯾﮏ ﻓﺮﺻﺖ ﺩﯾﮕﺮ‬

‫‪ ‬ﺩﺍﺕ ﻧﺖ ﻓﺮﻳﻤﻮﺭﻙ ‪Dot Net Frameworks‬‬

‫ﺍﯾﻦ ﻗﺴﻤﺖ ﺭﺍ ﭼﻮﻥ ﻫﻤﻪ ﺷﻤﺎ ﻋﺰﯾﺰﺍﻥ ﺍﺳﺘﺎﺩ ﻫﺴﺘﻴﺪ ﻣﯽ ﮔﺬﺍﺭﻡ ﺑﺮﺍی ﯾﮏ ﻓﺮﺻﺖ ﺩﯾﮕﺮ‬

‫‪ ‬ﭼﺮﺍ ‪ ASP.NET MVC‬؟‬


‫ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﺑﺮﺍی ﺑﻬﺒﻮﺩ ﺭﻭﺍﺑﻂ ﺑﻴﻦ ﮐﺎﺭﺑﺮ ﻭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﺍﯾﻦ ﺗﮑﻨﻮﻟﻮژی ﺭﺍ ﻣﻌﺮﻓﯽ ﻧﻤﻮﺩ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﺑﺘﻮﺍﻧﻨﺪ ﺁﻧﭽﻪ ﺭﺍ ﮐﻪ ﻣﺪ‬
‫ﻧﻈﺮ ﺩﺍﺭﻧﺪ ﺳﺮﯾﻌﺘﺮ ﻭ ﺑﺎ ﺩﻗﺖ ﺑﻴﺸﺘﺮ ﻭ ﺳﻮﺭﺱ ﮐﺪ ﮐﻤﻨﺮ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﻧﺪ‪.‬‬
‫ﺑﺮﺧﯽ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ‪ ،‬ﻫﻤﭽﻨﺎﻥ ﺍﺯ ‪ ASP.NET‬ﮐﻪ ﺑﺮ ﻣﺒﻨﺎی ﻓﺮﻡ ﻫﺎی ﻭﺏ ﻭ ‪ Postback‬ﺍﺳﺖ‪ ،‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻨﺪ‪ ،‬ﺑﺮﺧﯽ ﺍﺯ‬
‫ﻭﯾﮋﮔﯽ ﻫﺎی ‪ MVC‬ﺳﻮﺩ ﻣﯽ ﺑﺮﻧﺪ ﻭ ﺑﻌﻀﯽ ﻫﺎ ﻫﻢ ﺩﻭ ﭘﻠﺖ ﻓﺮﻡ ﺭﺍ ﺗﺮﮐﻴﺐ ﻣﯽ ﮐﻨﻨﺪ ﻭ ﺍﯾﻦ ﻣﻮﺿﻮﻉ ﺑﻴﺎﻧﮕﺮ ﺍﯾﻦ ﺍﺳﺖ ﮐﻪ ﻫﻴﭽﮑﺪﺍﻡ‬
‫ﺍﺯ ﭘﻠﺖ ﻓﺮﻡ ﻫﺎ ﻧﺎﻗﺺ ﯾﮑﺪﯾﮕﺮ ﻧﻴﺴﺘﻨﺪ‪ .‬ﺩﺭ ﻭﺍﻗﻊ ‪ MVC‬ﺑﺮ ﺭﻭی ﻣﻌﻤﺎﺭی ﻫﺎی ﭼﻨﺪ ﻻﯾﻪ ﺍی ﺟﻬﺖ ﺗﻔﮑﻴﮏ ﺑﺨﺶ ﻫﺎی ﻣﺨﺘﻠﻒ‬
‫ﺑﺮﻧﺎﻣﻪ )ﺑﺨﺶ ﻫﺎی ﻣﻨﻄﻘﯽ ﺑﺮﻧﺎﻣﻪ ﻣﺎﻧﻨﺪ ﺩﺍﺩﻩ ﻫﺎ‪ ،‬ﻣﺠﻮﺯﻫﺎ‪ ،‬ﮐﻨﺘﺮﻝ ﺻﺤﺖ ﺩﺍﺩﻩ ﻫﺎ ﻭ ﻻﯾﻪ ﻫﺎی ﻣﺮﺗﺒﻂ ﺑﺎ ﮐﺎﺭﺑﺮ ﻧﻬﺎﯾﯽ( ﻗﺮﺍﺭ ﻣﯽ‬
‫ﮔﻴﺮﺩ‪ .‬ﻣﻔﻬﻮﻡ ﺗﺎﺯﻩ ﺍی ﻧﻴﺴﺖ‪ ،‬ﺧﻴﻠﯽ ﻭﻗﺖ ﺍﺳﺖ ﮐﻪ ﺩﺭ ﺟﺎﻭﺍ‪ PHP ،‬ﻭ ﺑﺴﻴﺎﺭی ﭘﻠﺖ ﻓﺮﻡ ﻫﺎی ﺩﯾﮕﺮ ﺍﺯ ﺍﯾﻦ ﺍﻟﮕﻮﻫﺎ ﺑﺮﺍی ﻃﺮﺍﺣﯽ‬
‫ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﺷﻮﺩ‪ .‬ﺍﻣﺎ ﺑﺮﺍی ﻃﺮﺍﺣﺎﻥ ﻭ ﺗﻮﺳﻌﻪ ﺩﻫﻨﺪﮔﺎﻥ ‪ ASP.NET‬ﺗﺎﺯﮔﯽ ﺩﺍﺭﺩ‪.‬‬

‫‪ ‬ﺍﺟﺰﺍﻱ ﺗﺸﻜﻴﻞ ﺩﻫﻨﺪﻩ ) ﻣﻌﻤﺎﺭﻱ( ‪MVC‬‬


‫‪)Model -١‬ﻣﺪﻝ(‪ :‬ﻗﺴﻤﺘﯽ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﮐﺎﺭﺑﺮﺩی ﺍﺳﺖ ﮐﻪ ﻣﺴﺌﻮﻝ ﺑﺎﺯﯾﺎﺑﯽ ﺩﺍﺩﻩ ﺍﺯ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ‪ ،‬ﺫﺧﻴﺮﻩ ﺁﻥ‪ ،‬ﺗﺒﺪﯾﻞ ﺁﻥ ﺑﻪ‬
‫‪U‬‬ ‫‪U‬‬

‫ﺷﯽ ﯾﺎ ﺁﺑﺠﮑﺖ ﻫﺎ ﻭ ﭘﻴﺎﺩﻩ ﺳﺎﺯی ﻣﻨﻄﻖ ﺑﺮﻧﺎﻣﻪ ﺑﺮﺍی ﺩﺍﺩﻩ ﻫﺎی ﺩﺍﻣﻨﻪ ی ﻣﺴﺌﻠﻪ ﺍﺳﺖ‪ .‬ﺩﺭ ﺣﻘﻴﻘﺖ ﺑﺎﺭ ﺍﺻﻠﯽ ﻣﻌﻤﺎﺭی ‪MVC‬‬
‫ﺑﺮ ﻋﻬﺪﻩ ی ﺍﯾﻦ ﺑﺨﺶ ﺍﺳﺖ‪ .‬ﻣﺜﻼً ﯾﮏ ﺁﺑﺠﮑﺖ ‪ Product‬ﻣﻤﮑﻦ ﺍﺳﺖ ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺍﺯ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ﺑﺎﺯﯾﺎﺑﯽ ﮐﺮﺩﻩ‪ ،‬ﺑﺮ ﺭﻭی ﺁﻧﻬﺎ‬
‫ﻋﻤﻠﻴﺎﺗﯽ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ ﻭ ﺳﺮﺍﻧﺠﺎﻡ ﻧﺘﻴﺠﻪ ﺭﺍ ﺩﺭ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ﺉ ﺩﺭ ﺟﺪﻭﻝ ‪ Products‬ﺫﺧﻴﺮﻩ ﮐﻨﺪ‪.‬‬

‫‪)view -٢‬ﻧﻤﺎﯾﺸﮕﺮ(‪ :‬ﺍﺟﺰﺍﯾﯽ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺖ ﮐﻪ ﻭﺍﺳﻂ ﮐﺎﺭﺑﺮی ﺑﺮﻧﺎﻣﻪ )‪ (UI‬ﺭﺍ ﻣﯽ ﺳﺎﺯﺩ‪ .‬ﻣﻌﻤﻮﻻً ﺍﯾﻦ ‪ UI‬ﺍﺯ ﺩﺍﺩﻩ ﻫﺎی ﻣﺪﻝ‬
‫‪U‬‬ ‫‪U‬‬

‫ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮﺩ‪ .‬ﺩﺭ ﻭﺍﻗﻊ ﻧﻘﻄﻪ ﭘﺎﯾﺎﻥ ﺑﺮﻧﺎﻣﻪ ﮐﺎﺭﺑﺮﺩی ﺍﺳﺖ ‪ .‬ﺑﻪ ﮐﺎﺭﺑﺮ ﻧﺘﺎﯾﺞ ﻋﻤﻠﻴﺎﺕ ﻭ ﺑﺎﺯﯾﺎﺑﯽ ﻭ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﺍﺯ ﻃﺮﯾﻖ‬
‫ﺑﺮﻗﺮﺍﺭی ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﺩﻭ ﺑﺨﺶ ﺩﯾﮕﺮ؛ ﯾﻌﻨﯽ ﻣﺪﻝ ﻭ ﮐﻨﺘﺮﻟﮕﺮ ﺭﺍ ﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ‪.‬ﺑﺮﺍی ﻣﺜﺎﻝ‪ ،‬ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﮐﺎﺭﺑﺮ ﺩﺭ ﻓﺮﻡ ﻭﺭﻭﺩ ﺑﻪ‬
‫ﺳﻴﺴﺘﻢ ﺭﻣﺰ ﻋﺒﻮﺭ ﺧﻮﺩ ﺭﺍ ﻭﺍﺭﺩ ﻣﯽ ﮐﻨﺪ‪ ،‬ﺍﮐﺜﺮ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﺩﺭ ﻫﻤﺎﻥ ﻓﺮﻡ ﺍﻗﺪﺍﻡ ﺑﻪ ﭼﮏ ﮐﺮﺩﻥ ﺭﻣﺰ ﻋﺒﻮﺭ ﻣﯽ ﮐﻨﻨﺪ ﮐﻪ ﺍﯾﻦ‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪7‬‬

‫ﻋﻤﻞ ﻣﻐﺎﯾﺮ ﺑﺎ ﻗﻮﺍﻧﻴﻦ ‪ MVC‬ﺍﺳﺖ‪ .‬ﺩﺭ ‪ MVC‬ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﮐﺎﺭﺑﺮ ﺭﻣﺰ ﻋﺒﻮﺭ ﺭﺍ ﮐﺮﺩ‪ ،‬ﺭﻣﺰ ﻋﺒﻮﺭ ﺑﺪﻭﻥ ﻫﻴﭽﮕﻮﻧﻪ ﺍﻋﻤﺎﻟﯽ ﺑﻪ ﺑﺨﺶ‬
‫ﻫﺎی ﺩﯾﮕﺮ ﻓﺮﺳﺘﺎﺩﻩ ﻣﯽ ﺷﻮﺩ ﻭ ﻓﻘﻂ ﯾﮏ ﻧﺘﻴﺠﻪ ﺳﺎﺩﻩ ﯾﺎ ﺧﺒﺮ ﺍﺯ ﺑﺨﺶ ﻫﺎی ﺩﯾﮕﺮ ﺩﺭﯾﺎﻓﺖ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﺍﺯ ﻃﺮﯾﻖ ﺁﻥ ﺍﺟﺎﺯﻩ ی‬
‫ﻭﺭﻭﺩ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺩﺍﺩﻩ ﻣﯽ ﺷﻮﺩ‪.‬‬

‫‪)Controller -٣‬ﮐﻨﺘﺮﻟﮕﺮ(‪ :‬ﺍﺟﺰﺍﯾﯽ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺴﺘﻨﺪ ﮐﻪ ﻣﺪﯾﺮﯾﺖ ﺗﻌﺎﻣﻞ ﺑﺎ ﮐﺎﺭﺑﺮ ﺭﺍ ﺑﺮ ﻋﻬﺪﻩ ﺩﺍﺭﻧﺪ‪ .‬ﻣﯽ ﺗﻮﺍﻥ ﮔﻔﺖ ﮐﻪ ﻭﺍﺳﻂ‬
‫‪U‬‬ ‫‪U‬‬

‫ﺑﻴﻦ ﻣﺪﻝ ﻭ ﻧﻤﺎﯾﺸﮕﺮ ﻣﯽ ﺑﺎﺷﻨﺪ؛ ﯾﻌﻨﯽ ﺑﺎ ﻣﺪﻝ ﮐﺎﺭ ﻣﯽ ﮐﻨﺪ ﻭ ﺩﺭ ﺍﻧﺘﻬﺎ ﻧﻤﺎﯾﺸﮕﺮی ﺭﺍ ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﻭﺍﺳﻂ ﮐﺎﺭﺑﺮی ﺍﻧﺘﺨﺎﺏ‬
‫ﻣﯽ ﮐﻨﺪ‪ .‬ﻭﺭﻭﺩی ﮐﺎﺭﺑﺮ ﺭﺍ ﻣﺪﯾﺮﯾﺖ ﮐﺮﺩﻩ ﻭ ﺑﻪ ﺁﻧﻬﺎ ﭘﺎﺳﺦ ﻣﯽ ﺩﻫﺪ ﻭ ﺑﺎ ﮐﺎﺭﺑﺮ ﺗﻌﺎﻣﻞ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﺮﺍی ﻣﺜﺎﻝ‪ ،‬ﮐﻨﺘﺮﻟﮕﺮ ﻋﺒﺎﺭﺕ ﻫﺎی‬
‫ﭘﺮﺱ ﻭ ﺟﻮی ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ﺭﺍ ﻣﺪﯾﺮﯾﺖ ﮐﺮﺩﻩ ﻭ ﺁﻥ ﻫﺎ ﺭﺍ ﺑﻪ ﻣﺪﻝ ﺍﺭﺳﺎﻝ ﻣﯽ ﮐﻨﺪ‪ ،‬ﻭﻇﻴﻔﻪ ﺍﺟﺮﺍی ﭘﺮﺱ ﻭ ﺟﻮﻫﺎ ﺑﺎ ﻣﺪﻝ ﺍﺳﺖ‪.‬‬

‫‪ ‬ﺩﺭﻙ ﺍﻟﮕﻮﻱ ‪MVC.NET‬‬


‫ﺑﺮﺍی ﺩﺭک ﺑﻬﺘﺮ ﻣﻔﻬﻮﻡ ‪ MVC‬ﺑﻬﺘﺮ ﺍﺳﺖ ﯾﮏ ﻧﮕﺎﻫﯽ ﺑﻪ ﺷﮑﻞ ﺯﯾﺮ ﺑﻴﺎﻧﺪﺍﺯﯾﻢ‪:‬‬

‫‪MODEL‬‬
‫‪2‬‬

‫‪3‬‬
‫‪1‬‬
‫‪Controller‬‬ ‫‪USER‬‬
‫‪4‬‬
‫‪5‬‬
‫‪VIEW‬‬

‫ﯾﮏ ﺩﺭﺧﻮﺍﺳﺖ ﺩﺭ ﺷﮑﻞ ﺑﺎﻻ ﻣﺴﻴﺮﻫﺎی ﺯﯾﺮ ﺭﺍ ﻣﯽ ﭘﻴﻤﺎﯾﺪ‪:‬‬


‫‪ - ١‬ﮐﺎﺑﺮ ﺑﺎ ﻣﺮﻭﺭﮔﺮ ﺩﺭ ﺍﺭﺗﺒﺎﻁ ﺍﺳﺖ ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺁﺩﺭﺱ ﺳﺎﯾﺖ ﺁﻣﻮﺯ ﻓﺎﺭﺳﯽ ﯾﻌﻨﯽ ‪ www.faedu.ir‬ﺭﺍ ﺩﺭ ﻣﺮﻭﺭﮔﺮ ﻭﺍﺭﺩ ﻣﯽ‬
‫‪U‬‬ ‫‪U‬‬

‫ﻧﻤﺎﯾﺪ ﻭ ﯾﺎ ﯾﮏ ﻟﻴﻨﮏ ﺭﺍ ﺩﺭ ﯾﮏ ﺻﻔﺤﻪ ﮐﻠﻴﮏ ﻣﯽ ﻧﻤﺎﯾﺪ‪ .‬ﺍﯾﻦ ﻧﻘﻄﻪ ﺷﺮﻭﻉ ﺩﺭﺧﻮﺍﺳﺖ ﺍﺳﺖ‪.‬‬
‫‪ - ٢‬ﺩﺭﺧﻮﺍﺳﺖ ﺑﻪ ﮐﻨﺘﺮﻝ ﮔﺮ ﻓﺮﺳﺘﺎﺩﻩ ﻣﯽ ﺷﻮﺩ ﻭ ﺁﻥ ﺭﺍ ﺍﻋﺘﺒﺎﺭ ﺳﻨﺠﯽ ﻣﯽ ﻧﻤﺎﯾﺪ ﻭ ﺍﺟﺮﺍی ﺩﺭﺧﻮﺍﺳﺖ ﺭﺍ ﺩﺭ ﻣﺪﻝ ﺍﻟﺰﺍﻣﯽ‬
‫ﻣﯽ ﮐﻨﺪ‬
‫‪ - ٣‬ﻣﺪﻝ ﺑﻪ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ ﺭﺟﻮﻉ ﮐﺮﺩﻩ ﻭ ﺩﺍﺩﻩ ﻫﺎی ﺑﺎﺯﯾﺎﺑﯽ ﺷﺪﻩ ﺭﺍ ﺑﻪ ﮐﻨﺘﺮﻝ ﮔﺮ ﻣﯽ ﻓﺮﺳﺘﺪ‪.‬‬
‫‪ - ۴‬ﮐﻨﺘﺮﻝ ﮔﺮ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍ ﻓﺮﻣﺖ ﮐﺮﺩﻩ ﻭ ﺑﻪ ﻧﻤﺎﯾﺸﮕﺮ ﻣﻴﻔﺮﺳﺘﺪ ‪) .‬ﺍﻟﺒﺘﻪ ﻣﻨﻈﻮﺭ ﺍﺯ ﻧﻤﺎﯾﺸﮕﺮ ﺩﺭ ﺍﯾﻨﺠﺎ ﻣﺎﻧﻴﺘﻮﺭ ﻧﻴﺴﺖ !!!(‬
‫‪ - ۵‬ﺩﺭ ﻣﺮﺣﻠﻪ ﺁﺧﺮ ﻧﻤﺎﯾﺸﮕﺮ ﺩﺍﺩﻩ ﻫﺎی ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺭﺍ ﺩﺭﯾﺎﻓﺖ ﮐﺮﺩﻩ ﻭ ﺟﻮﺍﺏ ﺭﺍ ﺑﻪ ﮐﺎﺭﺑﺮ ﺑﺎﺯ ﻣﯽ ﮔﺮﺩﺍﻧﺪ ) ﺩﺭ ﺍﯾﻨﺠﺎ ﺩﺭ ﻣﺎﻧﻴﺘﻮﺭ‬
‫ﮐﺎﺭﺑﺮ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻣﯽ ﺷﻮﺩ (‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪8‬‬

‫‪ ‬ﭼﻪ ﺯﻣﺎﻧﻲ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ‪ MVC‬ﺭﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﻧﻤﺎﻳﻴﻢ؟‬

‫ﺷﻤﺎ ﺑﺎﯾﺪ ﺩﺭ ﻫﻨﮕﺎﻡ ﺍﻧﺘﺨﺎﺏ ‪ ASP.NET‬ﻭ ‪ASP.NET MVC‬ﺑﺮﺍی ﺳﺎﺧﺖ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﻭﺑﯽ ﺑﺴﻴﺎﺭ ﺩﻗﺖ ﮐﻨﻴﺪ‪ MVC .‬ﺟﺎﯾﮕﺰﯾﻨﯽ‬
‫ﺑﺮﺍی ﻓﺮﻡ ﻫﺎی ﻭﺏ ‪ ASP.NET‬ﻧﻴﺴﺖ ﻭ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﻫﺮ ﮐﺪﺍﻡ ﺍﺯ ﺁﻧﻬﺎ ﺑﺮﺍی ﺳﺎﺧﺖ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﻭﺑﯽ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ‪ .‬ﺍﮔﺮ‬
‫ﺷﻤﺎ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﻭﺑﯽ ﺑﺮ ﻣﺒﻨﺎی ﻓﺮﻡ ﻫﺎی ﻭﺏ ﺩﺍﺭﯾﺪ‪ ،‬ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﻫﻤﭽﻨﺎﻥ ﺁﻥ ﺭﺍ ﺑﻪ ﻫﻤﺎﻥ ﺷﻴﻮﻩ ی ﺳﺎﺑﻖ ﺍﺩﺍﻣﻪ ﺩﻫﻴﺪ‪.‬‬

‫‪ ‬ﻣﺰﺍﻳﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻭﺑﻲ ﻣﺒﺘﻨﻲ ﺑﺮ ‪MVC‬‬


‫ﺑﺎ ﺗﻘﺴﻴﻢ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺳﻪ ﻗﺴﻤﺖ ﻣﺪﻝ‪ ،‬ﻧﻤﺎﯾﺸﮕﺮ ﻭ ﮐﻨﺘﺮﻟﮕﺮ‪ ،‬ﻣﺪﯾﺮﯾﺖ ﺑﺮﻧﺎﻣﻪ ﯾﺎ ﭘﺮﻭژﻩ ﺭﺍ ﺳﺎﺩﻩ ﺗﺮ ﻣﯽ ﮐﻨﺪ‪.‬‬ ‫•‬
‫ﺍﺯ ‪ View State‬ﻭ ﻓﺮﻡ ﻫﺎی ﺳﺮﻭﺭی ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﯽ ﮐﻨﺪ ﻭ ﺍﺯ ﺍﯾﻦ ﻧﻈﺮ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻧﯽ ﮐﻪ ﺗﺴﻠﻂ ﮐﺎﻣﻞ ﺑﺮ‬ ‫•‬
‫ﺭﻓﺘﺎﺭ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﻣﯽ ﺧﻮﺍﻫﻨﺪ ﻋﺎﻟﯽ ﺍﺳﺖ‪.‬‬
‫ﺍﺯ ﺍﻟﮕﻮی ﮐﻨﺘﺮﻟﮕﺮ ﺟﻠﻮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺗﻮﺳﻂ ﯾﮏ ﮐﻨﺘﺮﻟﮕﺮ ﭘﺮﺩﺍﺯﺵ ﻣﯽ ﮐﻨﺪ‪ .‬ﺍﯾﻦ‬ ‫•‬
‫ﻣﺴﺌﻠﻪ ﺑﺎﻋﺚ ﻣﯽ ﺷﻮﺩ ﺗﺎ ﺑﺘﻮﺍﻧﻴﻢ ﺑﺮﻧﺎﻣﻪ ﻫﺎﯾﯽ ﺭﺍ ﻃﺮﺍﺣﯽ ﮐﻨﻴﻢ ﮐﻪ ﺍﺯ ﺯﯾﺮ ﺳﺎﺧﺖ ﻫﺎی ﻏﻨﯽ ﻣﺴﻴﺮ ﯾﺎﺑﯽ‬
‫ﭘﺸﺘﻴﺒﺎﻧﯽ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫ﭘﺸﺘﻴﺒﺎﻧﯽ ﺑﻬﺘﺮی ﺍﺯ ﻃﺮﺍﺣﯽ ﻭ ﺗﻮﺳﻌﻪ ﺁﺯﻣﻮﻥ ﻣﺤﻮﺭ ﺩﺍﺭﺩ‪.‬‬ ‫•‬
‫ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﭘﺸﺘﻴﺒﺎﻧﯽ ﺷﺪﻩ ﺗﻮﺳﻂ ﺗﻴﻢ ﻫﺎی ﺑﺰﺭگ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﮐﻪ ﮐﻨﺘﺮﻝ ﺑﺴﻴﺎﺭ ﺑﺮ ﺭﻓﺘﺎﺭ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﻣﯽ‬ ‫•‬
‫ﺧﻮﺍﻫﻨﺪ‪ ،‬ﺑﻬﺘﺮ ﮐﺎﺭ ﻣﯽ ﮐﻨﻨﺪ‪.‬‬

‫‪ ‬ﻭﻳﮋﮔﻲ ﻫﺎﻱ ‪ASP.Net MVC‬‬


‫ﺟﺪﺍﺳﺎﺯی ﻭﻇﺎﯾﻒ ﺑﺮﻧﻤﺎﻩ ﮐﺎﺭﺑﺮﺩی )ﻣﻨﻄﻖ ﻭﺭﻭﺩی‪ ،‬ﻣﻨﻄﻖ ﮐﺎﺭی ﻭ ﻣﻨﻄﻖ ﻭﺍﺳﻂ ﮐﺎﺭﺑﺮی( ﻭ ﺍﻣﮑﺎﻥ ﺗﺴﺖ ﮐﺮﺩﻥ‬ ‫•‬
‫ﺑﺮﻧﺎﻣﻪ ﻭ ﻃﺮﺍﺣﯽ ﻭ ﺗﻮﺳﻌﻪ ﺁﺯﻣﻮﻥ ﻣﺤﻮﺭ ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ‪ .‬ﺗﻤﺎﻡ ﺍﺭﺗﺒﺎﻃﺎﺕ ﺍﺻﻠﯽ ﺩﺭ ‪ MVC‬ﺑﺮ ﻣﺒﻨﺎی ﻭﺍﺳﻂ‬
‫ﺍﺳﺖ ﻭ ﻣﯽ ﺗﻮﺍﻥ ﺁﻥ ﻫﺎ ﺭﺍ ﺑﺎ ﺍﺷﻴﺎی ﺳﺎﺧﺘﮕﯽ ‪ Mick‬ﺗﺴﺖ ﮐﺮﺩ‪ .‬ﻣﯽ ﺗﻮﺍﻧﻴﺪ ک‪ .‬ﻧﺘﺮﻟﮕﺮﻫﺎ ﺭﺍ ﺑﺪﻭﻥ ﺍﯾﻨﮑﻪ ﺁﻧﻬﺎ ﺭﺍ ﺩﺭ‬
‫‪ASP.NET‬ﺍﺟﺮﺍ ﮐﻨﻴﺪ‪ ،‬ﺗﺴﺖ ﮐﻨﻴﺪ ﻭ ﺍﯾﻦ ﺑﺎﻋﺚ ﺍﻓﺰﺍﯾﺶ ﺳﺮﻋﺖ ﻭ ﺍﻧﻌﻄﺎﻑ ﺗﺴﺖ ﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺷﻮﺩ‪ .‬ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ‬
‫ﻫﺮ ﻓﺮﯾﻢ ﻭﺭک ﺗﺴﺖ ﮐﻪ ﺑﺎ ﻓﺮﯾﻢ ﻭﺭک ‪ Net.‬ﻣﻨﻄﺒﻖ ﺍﺳﺖ ﺑﺮﺍی ﺍﯾﻦ ﮐﺎﺭ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ‪.‬‬
‫ﻓﺮﯾﻢ ﻭﺭﮐﯽ ﺗﻮﺳﻌﻪ ﭘﺬﯾﺮ ﻭ ﻗﺎﺑﻞ ﺍﺗﺼﺎﻝ‪ .‬ﺍﺟﺰﺍی ﺍﺻﻠﯽ ‪ ASP.NET MVC‬ﺑﻪ ﮔﻮﻧﻪ ﺍی ﻃﺮﺍﺣﯽ ﺷﺪﻩ ﺍﻧﺪﮐﻪ ﺑﻪ ﺭﺍﺣﺘﯽ‬ ‫•‬
‫ﺟﺎﯾﮕﺰﯾﻦ ﯾﺎ ﺳﻔﺎﺭﺷﯽ ﺷﻮﻧﺪ‪ .‬ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺑﻪ ﺳﺎﺩﮔﯽ ﭘﻴﺎﺩﻩ ﺳﺎﺯی ﻫﺎی ﺧﻮﺩﺗﺎﻥ ﺭﺍ ﺟﺎﯾﮕﺰﯾﻦ ﻣﻮﺗﻮﺭ ﻧﻤﺎﯾﺸﮕﺮ‪،‬‬
‫ﺳﻴﺎﺳﺖ ﻫﺎی ﺁﺩﺭﺱ‪ ،‬ﺳﺮﯾﺎﻟﯽ ﮐﺮﺩﻥ ﭘﺎﺭﺍﻣﺘﺮﻫﺎی ﻣﺘﺪﻫﺎی ﻋﻤﻠﻴﺎﺕ ﯾﺎ ﺳﺎﯾﺮ ﺍﺟﺰﺍ ﮐﻨﻴﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ ‪ASP.NET MVC‬‬
‫ﺍﺯ ﻓﺮﯾﻢ ﻭﺭک ﻫﺎی ﺗﺰﺭﯾﻖ ﻭﺍﺑﺴﺘﮕﯽ ﻭ ﻭﺍﺭﻭﻧﮕﯽ ﮐﻨﺘﺮﻝ ﭘﺸﺘﻴﺒﺎﻧﯽ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﻪ ﺷﻤﺎ ﺍﻣﮑﺎﻥ ﻣﯽ ﺩﻫﺪ ﺑﻪ ﺟﺎی ﺍﯾﻦ‬
‫ﮐﻪ ﺍﺷﻴﺎ ﺭﺍ ﺗﻮﺳﻂ ﮐﻼﺱ ﻫﺎ ﺑﺴﺎﺯﯾﺪ‪ ،‬ﺁﻧﻬﺎ ﺭﺍ ﺍﺯ ﺟﺎﯾﯽ ﺑﻴﺮﻭﻥ ﺍﺯ ﮐﺪ ﻣﺜﻞ ﻓﺎﯾﻞ ﻫﺎی ﺗﻨﻈﻴﻤﺎﺕ ﺑﮕﻴﺮﯾﺪ ﻭ ﺍﯾﻦ ﻣﺴﺌﻠﻪ‬
‫ﺗﺴﺖ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺳﺎﺩﻩ ﺗﺮ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫ﻧﮕﺎﺷﺖ ﻫﺎی ﻗﻮی ﺁﺩﺭﺱ ﻫﺎ ﮐﻪ ﺍﻣﮑﺎﻥ ﺳﺎﺧﺖ ﺑﺮﻧﺎﻣﻪ ﻫﺎﯾﯽ ﺑﺎ ﺁﺩﺭﺱ ﻫﺎی ﺑﺎ ﻣﻌﻨﯽ ﻭ ﺟﺴﺘﺠﻮ ﺷﺪﻧﯽ )ﻗﺎﺑﻞ‬ ‫•‬
‫ﺟﺴﺘﺠﻮ ﺗﻮﺳﻂ ﻣﻮﺗﻮﺭﻫﺎی ﺟﺴﺘﺠﻮﮔﺮ( ﺭﺍ ﻣﯽ ﺩﻫﺪﻭ ﻧﻴﺎﺯی ﻧﻴﺴﺖ ﮐﻪ ﺁﺩﺭﺱ ﻫﺎ ﭘﺴﻮﻧﺪ ﻓﺎﯾﻞ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ ،‬ﺁﻧﻬﺎ‬
‫ﺑﻪ ﮔﻮﻧﻪ ﺍی ﻃﺮﺍﺣﯽ ﺷﺪﻩ ﺍﻧﺪ ﮐﻪ ﺍﺯ ﺍﻟﮕﻮﻫﺎی ﻧﺎﻣﮕﺬﺍﺭی ﻗﺎﺑﻞ ﻓﻬﻢ ﺑﺮﺍی ﻣﻮﺗﻮﺭﻫﺎی ﺟﺴﺘﺠﻮ ‪SEO‬ﻭ ﺁﺩﺭﺱ ﻫﺎی‬
‫ﺍﻧﺘﻘﺎﻝ ﻭﺿﻌﻴﺖ ﻗﺎﺑﻞ ﻧﻤﺎﯾﺶ ‪ REST‬ﭘﻴﺮﻭی ﮐﻨﻨﺪ‪.‬‬
‫ﭘﺸﺘﻴﺒﺎﻧﯽ ﺑﺮﺍی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺸﺎﻧﻪ ﮔﺬﺍﺭی ﺩﺭ ﺻﻔﺤﺎﺕ(‪ ASP.NET‬ﻓﺎﯾﻞ ﻫﺎی ‪aspx).‬ﮐﻨﺘﺮﻝ ﻫﺎی ﮐﺎﺭﺑﺮ )ﻓﺎﯾﻞ ﻫﺎی‬ ‫•‬
‫)‪ascx.‬ﺻﻔﺤﺎﺕ(‪ Master‬ﺑﺎ ﭘﺴﻮﻧﺪ )‪ master.‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻗﺎﻟﺐ ﻫﺎی ﻧﻤﺎﯾﺸﮕﺮ‪ .‬ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺑﺮﺧﯽ ﻭﯾﮋﮔﯽ‬
‫ﻫﺎی ﻣﻮﺟﻮﺩ ‪ASP.NET‬ﺍﺯ ﻗﺒﻴﻞ ﺻﻔﺤﺎﺕ ‪ master‬ﺗﻮ ﺩﺭ ﺗﻮ‪ ،‬ﺍﺳﮑﺮﯾﭙﺖ ﺩﺭﻭﻧﯽ)>‪ ، (<%=%‬ﮐﻨﺘﺮﻝ ﻫﺎی ﺳﺮﻭﺭ‬
‫ﺍﻋﻼﻥ ﺷﺪﻩ‪ ،‬ﻗﺎﻟﺐ‪ ،‬ﺍﻧﻘﻴﺎﺩ ﺩﺍﺩﻩ ﻫﺎ‪ ،‬ﻣﺤﻠﯽ ﺳﺎﺯی ﻭ … ﺩﺭ ﻓﺮﯾﻢ ﻭﺭک ‪ ASP.NET MVC‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ‪.‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪9‬‬

‫ﭘﺸﺘﻴﺒﺎﻧﯽ ﺍﺯ ﻭﯾﮋﮐﯽ ﻫﺎی ﻣﻮﺟﻮﺩ ‪ ASP.NET : ASP.NET MVC‬ﺑﻪ ﻣﺎ ﺍﯾﻦ ﺍﻣﮑﺎﻥ ﺭﺍ ﻣﯽ ﺩﻫﺪ ﺗﺎ ﺍﺯ ﻭﯾﮋﮔﯽ ﻫﺎﯾﯽ‬ ‫•‬
‫ﻣﺎﻧﻨﺪ ﻣﺠﻮﺯ ﻓﺮﻡ ﻭ ﺗﺸﺨﻴﺺ ﻫﻮﯾﺖ ﻭﯾﻨﺪﻭﺯ‪ ،‬ﻣﺠﻮﺯ ﺁﺩﺭﺱ ﻫﺎ‪ ،‬ﻋﻀﻮﯾﺖ ﻭ ﻧﻘﺶ ﻫﺎ‪ ،‬ﺧﺮﻭﺟﯽ ﻭ ﮐﺶ ﮐﺮﺩﻥ ﺩﺍﺩﻩ ﻫﺎ ﻭ‬
‫‪Session‬ﻭ ﻣﺪﯾﺮﯾﺖ ﻭﺿﻌﻴﺖ ﭘﺮﻭﻓﺎﯾﻞ‪ ،‬ﻣﺎﻧﻴﺘﻮﺭ ﮐﺮﺩﻥ ﺻﺤﻴﺢ‪ ،‬ﺳﻴﺴﺘﻢ ﭘﻴﮑﺮ ﺑﻨﺪی ﻭ ﻣﻌﻤﺎﺭی ﻋﺮﺿﻪ ﮐﻨﻨﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﮐﻨﻴﺪ‪.‬‬

‫ﺣﺎﻝ ﮐﻪ ﺑﺎ ﻣﻔﺎﻫﻴﻢ ﭘﺎﯾﻪ ﺍی ﻓﺮﯾﻢ ﻭﺭک ﺩﺍﺕ ﻧﺖ ﻭ ﻫﻤﭽﻨﻴﻦ ‪ MVC‬ﺁﺷﻨﺎ ﺷﺪﯾﺪ‪ ،‬ﯾﮏ ﭘﺮﻭژﻩ ﺳﺎﺩﻩ ﺭﺍ ﺷﺮﻭﻉ ﺑﻪ ﻧﻮﺷﺘﻦ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪.‬‬

‫‪ ‬ﭘﺮﻭژﻩ ‪:1‬‬
‫‪ - ١‬ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺭﺍ ﺑﺎﺯ ﮐﻨﻴﺪ‬
‫‪ - ٢‬ﺍﺯ ﻣﻨﻮی ﻓﺎﯾﻞ ﮔﺰﯾﻨﻪ ‪ New Project‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪.‬‬
‫‪ - ٣‬ﺍﺯ ﭘﻨﺠﺮﻩ ﻣﺤﺎﻭﺭﻩ ﺍی ‪ NEW Project‬ﺩﺭ ﻓﺴﻤﺖ ﭼﭗ ‪ Visual C#>WEB‬ﺭﺍ ﺍﻧﺨﺎﺏ ﻭ ﺍﺯ ﻗﺴﻤﺖ ﺳﻤﺖ ﺭﺍﺳﺖ ﮔﺰﯾﻨﻪ‬
‫‪ ASP.NET MVC Web Application‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪ .‬ﺩﺭ ﻗﺴﻤﺖ ﭘﺎﯾﻴﻦ ﻧﺎﻣﯽ ﺭﺍ ﺑﺮﺍی ﭘﺮﻭژﻩ ﺧﻮﺩ ﺑﺮﮔﺰﯾﻨﻴﺪ‪ ).‬ﻣﺎﻧﻨﺪ ﺷﮑﻞ‬
‫ﺯﯾﺮ(‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪10‬‬

‫‪ - ۴‬ﭘﺲ ﺍﺯ ﺍﯾﻨﮑﻪ ﺑﺮ ﺭﻭی ﮔﺰﯾﻨﻪ ‪ OK‬ﮐﻠﻴﮏ ﻣﯽ ﻧﻤﺎﯾﻴﺪ‪ ،‬ﭘﻨﺠﺮﻩ ﺍی ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻣﯽ ﺷﻮﺩ‪ .‬ﺩﺭﺑﺎﺭﻩ ﺍﯾﻦ‬
‫( ﻣﻔﺼﻞ ﺗﻮﺿﻴﺢ ﻣﯽ ﺩﻫﻢ‪ .‬ﺗﻨﻈﻴﻤﺎﺕ ﭘﻴﺶ ﻓﺮﺽ ﺭﺍ ﻗﺒﻮﻝ ﮐﺮﺩﻩ ﻭ‬ ‫ﻗﺴﻤﺖ ﺩﺭ ﻓﺼﻞ ﻫﺎی ﺁﯾﻨﺪﻩ )ﺑﺨﺶ ﺷﻤﺎﺭﻩ‬
‫ﺍﺩﺍﻣﻪ ﺩﻫﻴﺪ‪.‬‬

‫‪ - ۵‬ﭘﺲ ﺍﺯ ﭼﻨﺪ ﺛﺎﻧﻴﻪ ﮐﻪ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﻣﺸﻐﻮﻝ ﺑﻪ ﻓﻌﺎﻟﻴﺖ ﺷﺪ ‪ ،‬ﺩﺭ ﭘﻨﺠﺮﻩ ‪ Solution Explorer‬ﻓﺎﯾﻞ ﻫﺎ ﻭ ﻓﻮﻟﺪﺭﻫﺎﯾﯽ ﺭﺍ‬
‫ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﺑﺮﺍی ﺷﻤﺎ ﻭ ﭘﺮﻭژﻩ ﺷﻤﺎ ﺳﺎﺧﺘﻪ ﺍﺳﺖ‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪11‬‬

‫‪ ‬ﻓﻮﻟﺪﺭﻫﺎﻱ ﭘﻴﺶ ﻓﺮﺽ‬

‫ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﻓﺎﯾﻞ ﻭ ﻓﻮﻟﺪﺭﻫﺎی ﺍﺳﺘﺎﻧﺪﺍﺭﺩی ﺭﺍ ﺑﻪ ﭘﺮﻭژﻩ ﺷﻤﺎ ﺍﺿﺎﻓﻪ ﻣﯽ ﻧﻤﺎﯾﺪ ﺗﺎ ﻫﻢ ﮐﺎﺭ ﺷﻤﺎ ﺁﺳﺎﻥ‬
‫ﺷﻮﺩ ﺗﺎ ﻫﻢ ﺍﺯ ﯾﮏ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺧﺎﺹ ﻭ ) ﺗﻘﺮﯾﺒﺎً( ﻣﻮﺭﺩ ﺗﺎﯾﻴﺪ ﺧﻮﺩ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﭘﻴﺮﻭی ﻧﻤﺎﯾﻴﺪ‪ .‬ﺍﯾﻦ ﻓﻮﻟﺪﺭﻫﺎ ﺷﺎﻣﻞ‪:‬‬

‫‪ : App_Date‬ﺷﺎﻣﻞ ﻓﺎﯾﻞ ﻫﺎی ﺩﯾﺘﺎﺑﻴﺲ ﻣﯽ ﺷﻮﺩ‬

‫‪ :Content‬ﺷﺎﻣﻞ ﻓﺎﯾﻞ ﻫﺎی ﻣﺤﺘﻮﺍﯾﯽ ﺍﺳﺘﺎﺗﻴﮏ ﻣﺎﻧﻨﺪ ﻋﮑﺲ ﻫﺎ ﻭ ﻓﺎﯾﻞ ﻫﺎی ‪ CSS‬ﻣﯽ ﺷﻮﺩ‬

‫‪ :Controllers‬ﺷﺎﻣﻞ ﮐﻼﺱ ﻫﺎی ﮐﻨﺘﺮﻟﺮ ‪ ASP.Net MVC‬ﻣﯽ ﺷﻮﺩ‪.‬‬

‫‪ :Models‬ﺷﺎﻣﻞ ﮐﻼﺱ ﻫﺎی ﻣﺪﻝ ‪ ASP.Net MVC‬ﻣﯽ ﺷﻮﺩ‪.‬‬

‫‪ :Scripts‬ﺷﺎﻣﻞ ﻓﺎﯾﻞ ﻫﺎی ﺟﺎﻭﺍ ﺍﺳﮑﺮﯾﭙﺘﯽ ﻣﺎﻧﻨﺪ ‪ JQUERY , AjaxLiberary‬ﻣﯽ ﺷﻮﺩ‬

‫‪ :Views‬ﺷﺎﻣﻞ ﮐﻼﺱ ﻫﺎی ﻧﻤﺎﯾﺸﮕﺮ ‪ ASP.Net MVC‬ﻣﯽ ﺷﻮﺩ‪.‬‬

‫ﻭﻗﺘﯽ ﺷﻤﺎ ﯾﮏ ﭘﺮﻭژﻩ ‪ Asp.Net MVC‬ﻣﯽ ﺳﺎﺯﯾﺪ ﺣﺘﻤﺎً ﺑﺎﯾﺪ ) ﺍﻟﺒﺘﻪ ﺍﺟﺒﺎﺭی ﻧﻴﺴﺖ ﺑﺮﺍی ﺭﺍﺣﺘﯽ ﻭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﮐﺎﺭﯾﺴﺖ ( ﻓﺎﯾﻞ‬
‫ﻫﺎی ‪ Controller‬ﺭﺍ ﺩﺭﻭﻥ ﻓﻮﻟﺪﺭ ﺧﻮﺩ ﺫﺧﻴﺮﻩ ﻧﻤﺎﯾﻴﺪ‪ ،‬ﺍﺳﮑﺮﯾﭙﺖ ﻫﺎ ﺭﺍ ﺩﺭ ﻓﻮﻟﺪﺭ ‪ Scripts‬ﻭ ‪...‬‬

‫‪ ‬ﺭﺍﻩ ﺍﻧﺪﺍﺯﻱ ﭘﺮﻭژﻩ‬

‫ﺣﺎﻝ ﺑﺮﺍی ﺭﺍﻩ ﺍﻧﺪﺍﺯی ﭘﺮﻭژﻩ ﻣﯽ ﺑﺎﯾﺴﺖ ﺍﺯ ﯾﮑﯽ ﺍﺯ ﺩﻭ ﻃﺮﯾﻖ ﺯﯾﺮ ﻋﻤﻞ ﻧﻤﺎﯾﻴﺪ‪:‬‬

‫‪ - ١‬ﺩﮐﻤﻪ ‪ F5‬ﺭﺍ ﺍﺯ ﺭﻭی ﮐﻴﺒﻮﺭﺩ ﻓﺸﺎﺭ ﺩﻫﻴﺪ‪.‬‬


‫‪ - ٢‬ﺍﺯ ﻣﻨﻮی ‪ Debug‬ﺑﺮ ﺭﻭی ﮔﺰﯾﻨﻪ ‪ Start Debugging‬ﮐﻠﻴﮏ ﻧﻤﺎﯾﻴﺪ‪.‬‬

‫ﭼﻨﺎﻧﭽﻪ ﺑﺮﺍی ﺑﺎﺭ ﺍﻭﻝ ﯾﮏ ﭘﺮﻭژﻩ ﺭﺍ ﺍﺟﺮﺍ ﻣﯽ ﻧﻤﺎﯾﻴﺪ ﯾﮏ ﭘﻨﺠﺮﻩ ﺍی ﺑﺮﺍی ﺷﻤﺎ ﺑﺎﺯ ﻣﯽ ﺷﻮﺩ ﻭ ﺍﺯ ﺷﻤﺎ ﻣﻴﺨﻮﺍﻫﺪ ﮐﻪ ﺁﯾﺎ ﻣﻮﺍﻓﻘﻴﺪ‬
‫ﺩﯾﺒﺎﮔﻴﻨﮓ ﺑﻪ ﺻﻮﺭﺕ ﺍﺗﻮﻣﺎﺗﻴﮏ ﻓﻌﺎﻝ ﺷﻮﺩ ﻭ ﺑﻬﺘﺮ ﺍﺳﺖ ﺷﻤﺎ ﮔﺰﯾﻨﻪ ‪ OK‬ﺭﺍ ﮐﻠﻴﮏ ﻧﻤﺎﯾﻴﺪ‪ .‬ﺑﻌﺪ ﺍﺯ ﺍﯾﻨﮑﻪ ﺷﻤﺎ ﭘﺮﻭژﻩ ﺭﺍ ﺍﺟﺮﺍ ﮐﺮﺩﯾﺪ‬
‫ﭘﻨﺠﺮﻩ ﻣﺮﻭﺭﮔﺮ ﺑﺎﺯ ﺷﺪﻩ ﻭ ﭘﺮﻭژﻩ ﺷﻤﺎ ﺭﺍ ﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ ) ﻣﻄﺎﺑﻖ ﺷﮑﻞ (‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪12‬‬

‫ﺍﯾﻦ ﺳﺎﺩﻩ ﺗﺮﯾﻦ ﻧﻮﻉ ﭘﺮﻭژﻩ ﺩﺭ ‪ ASP.Net MVC‬ﻣﻴﺒﺎﺷﺪ ﮐﻪ ﺷﻤﺎﻝ ﻫﻴﭻ ﭼﻴﺰ ﻧﻤﯽ ﺷﻮﺩ ) ﺍﺯ ﺟﻤﻠﻪ ﻻﯾﻪ ﻫﺎی ﻣﺨﺘﻠﻒ ﻣﻌﻤﺎﺭی‬
‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ‪ ،‬ﻻﯾﻪ ﺑﺎﻧﮏ ﺍﻃﻼﻋﺎﺗﯽ‪ ،‬ﻻﯾﻪ ﮐﺎﺭﺑﺮی‪( ... ،‬‬

‫ﺍﯾﻦ ﺻﻔﺤﻪ ﺗﻨﻬﺎ ﺷﺎﻣﻞ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ‪ ASP.Net MVC‬ﻭ ﺩﻭ ﻧﻤﺎﯾﺸﮕﺮ ‪ ASP.Net MVC‬ﻣﯽ ﺑﺎﺷﺪ‪.‬‬

‫ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﺩﺭ ﻓﻮﻟﺪﺭ ﺯﯾﺮ ﻗﺮﺍﺭ ﺩﺍﺭﺩ‪:‬‬

‫‪C# CODE‬‬

‫‪…\Controllers\HomeControllers.cs‬‬

‫‪VB CODE‬‬

‫‪…\Controllers\HomeControllers.vb‬‬

‫ﺍﮔﺮ ﺷﻤﺎ ﺍﺯ ﺁﺩﺭﺱ ﺑﺎﻻ ﺻﻔﺤﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﺎﺯ ﻧﻤﺎﯾﻴﺪ ﮐﺪﻫﺎی ﺯﯾﺮ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻣﯽ ﻧﻤﺎﯾﻴﺪ‪:‬‬

‫‪C# CODE‬‬

‫‪using‬‬ ‫;‪System‬‬
‫‪using‬‬ ‫;‪System.Collections.Generic‬‬
‫‪using‬‬ ‫;‪System.Linq‬‬
‫‪using‬‬ ‫;‪System.Web‬‬
‫‪using‬‬ ‫;‪System.Web.Mvc‬‬

‫‪namespace MyFirstMvcApp.Controllers‬‬
‫{‬
‫]‪[HandleError‬‬
‫‪public class HomeController : Controller‬‬
‫{‬
‫)(‪public ActionResult Index‬‬
‫{‬
‫;"!‪ViewData["Message"] = "Welcome to ASP.NET MVC‬‬

‫;)(‪return View‬‬
‫}‬

‫)(‪public ActionResult About‬‬


‫{‬
‫;)(‪return View‬‬
‫}‬
‫}‬
‫}‬

‫ﺍﯾﻦ ﺻﻔﺤﻪ ﮐﺪ ﺷﺎﻣﻞ ﯾﮏ ﮐﻼﺱ ﻭ ﺩﻭ ﻣﺘﺪ ﺑﺎ ﻧﺎﻡ ﻫﺎی )(‪ Index‬ﻭ )(‪ About‬ﻣﯽ ﺷﻮﺩ‪ .‬ﻫﺮ ﺩﻭ ﻣﺘﺪ ﺑﺮﺍی ﺑﺮﮔﺮﺩﺍﻧﺪﻥ ﻧﻤﺎﯾﺸﮕﺮ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﻭﻗﺘﯽ ﺷﻤﺎ ﺍﻭﻟﻴﻦ ﭘﺮﻭژﻩ ﺧﻮﺩ ﺭﺍ ﺍﺟﺮﺍ ﻣﯽ ﻧﻤﺎﯾﻴﺪ‪ ،‬ﻣﺘﺪ )(‪ Index‬ﺍﺟﺮﺍ ﺷﺪﻩ ﻭ ﺳﭙﺲ ‪ Index‬ﺭﺍ ﺩﺭ ﻗﺴﻤﺖ ‪ return‬ﻧﻤﺎﯾﺶ ﻣﯽ‬
‫ﺩﻫﺪ‪ .‬ﺍﮔﺮ ﺷﻤﺎ ﺑﺮ ﺭﻭی ﺗﺐ ‪ About‬ﺩﺭ ﺻﻔﺤﻪ ﺍﺻﻠﯽ ) ﻣﺮﻭﺭﮔﺮ ( ﮐﻠﻴﮏ ﮐﻨﻴﺪ ﺍﮐﺸﻦ ﯾﺎ ﺣﺎﻟﺖ ﺩﻭﻡ ﻣﺘﺪ ﮐﻪ )(‪ About‬ﻣﯽ ﺑﺎﺷﺪ‬
‫ﺍﺗﻔﺎﻕ ﻣﯽ ﺍﻓﺘﺪ ﻭ ﻭﺍﺭﺩ ﺻﻔﺤﻪ ‪ About‬ﻣﻴﺸﻮﺩ‪.‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪13‬‬

‫ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﯾﻦ ﺩﻭ ﺻﻔﺤﻪ ﺭﺍ ﺩﺭ ﻣﺴﻴﺮ ﺯﯾﺮ ﭘﻴﺪﺍ ﮐﻨﻴﺪ‪:‬‬

‫‪…\Views\Home\About.aspx‬‬

‫‪…\Views\Home\Index.aspx‬‬

‫ﺳﻮﺭﺱ ﮐﺪﻫﯽ ﺻﻔﺤﻪ ‪ Index.aspx‬ﺑﻪ ﺷﺮﺡ ﺫﯾﻞ ﻣﯽ ﺑﺎﺷﺪ‪:‬‬

‫‪C# CODE‬‬

‫"‪<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage‬‬


‫>‪%‬‬

‫>"‪<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server‬‬


‫‪Home Page‬‬
‫>‪</asp:Content‬‬

‫>"‪<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server‬‬


‫>‪<h2><%: ViewData["Message"] %></h2‬‬
‫>‪<p‬‬
‫‪To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC‬‬
‫‪Website">http://asp.net/mvc</a>.‬‬
‫>‪</p‬‬
‫>‪</asp:Content‬‬

‫ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﻣﺸﺎﻫﺪﻩ ﻣﯽ ﻧﻤﺎﯾﻴﺪ ﺍﯾﻦ ﺻﻔﺤﻪ ﺗﻘﺮﯾﺒﺎً ﺍﺯ ﮐﺪﻫﺎی ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ‪ HTML‬ﺑﻪ ﻫﻤﺮﺍﻩ ﯾﮏ ﺳﺮی ﮐﺪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﻪ‬
‫ﺯﺑﺎﻥ ‪ ASP‬ﺗﺸﮑﻴﻞ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬

‫‪ ‬ﻧﺘﻴﺠﻪ ﮔﻴﺮﻱ‬

‫ﻫﺪﻑ ﺍﺯ ﺍﯾﻦ ﺑﺨﺶ ﺁﻣﺎﺩﮔﯽ ﺷﻤﺎ ﻭ ﺫﻫﻦ ﺷﻤﺎ ﺑﺮﺍی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺑﻪ ﺯﺑﺎﻥ ‪ ASP.Net MVC‬ﺑﻮﺩﻩ‪ .‬ﺩﺭ ﺍﻭﻝ ﻓﺼﻞ ﺷﻤﺎ ﺭﺍ ﺑﺎ‬
‫ﻣﺒﺤﺚ ﺩﺍﺕ ﻧﺖ ﻓﺮﯾﻤﻮﺭک ﺁﺷﻨﺎ ﮐﺮﺩﯾﻢ ﻭ ﯾﮏ ﺗﻮﺿﻴﺢ ﻣﺨﺘﺼﺮ ﺩﺭﺑﺎﺭﻩ ﺁﻥ ﺩﺍﺩﯾﻢ‪ .‬ﺑﻌﺪ ﺩﺭ ﻣﻮﺭﺩ ‪ ASP.Net MVC‬ﺻﺤﺒﺖ ﮐﺮﺩﯾﻢ ﻭ ﺍﺯ‬
‫ﻣﻌﻤﺎﺭی ‪ MVC‬ﻧﻴﺰ ﭼﻨﺪ ﺧﻄﯽ ﺗﻮﺿﻴﺢ ﺩﺍﺩﯾﻢ‪ .‬ﺳﭙﺲ ﺍﻭﻟﻴﻦ ﭘﺮﻭژﻩ ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ ﻭ ﯾﮏ ﺗﻮﺿﻴﺢ ) ﻧﻪ ﭼﻨﺪﺍﻥ ﻣﻔﺼﻞ ( ﺩﺭﺑﺎﺭﻩ ﺁﻥ‬
‫ﺩﺍﺩﯾﻢ‪.‬‬

‫ﻫﺪﻑ ﺍﯾﻦ ﻓﺼﻞ ﺗﻨﻬﺎ ﺁﺷﻨﺎﯾﯽ ﺍﻭﻟﻴﻪ ﺷﻤﺎ ﺑﺎ ﺗﮑﻨﻮﻟﻮژِی ‪ ASP.Net MVC‬ﺑﻮﺩﻩ ﺍﺳﺖ‪.‬‬

‫ﺩﺭ ﭘﺎﯾﺎﻥ ﺍﺯ ﺷﻤﺎ ﺩﻭﺳﺘﺎﻥ ﻣﯽ ﺧﻮﺍﻫﻢ ﭼﻨﺎﻧﭽﻪ ﻧﻈﺮ ﯾﺎ ﺍﻧﺘﻘﺎﺩی ﺩﺭﺑﺎﺭﻩ ﺍﯾﻦ ﻣﻄﺎﻟﺐ ﺩﺍﺭﯾﺪ ﺣﺘﻤﺎً ﺑﺎ ﺑﻨﺪﻩ ﺩﺭ ﻣﻴﺎﻥ ﺑﮕﺬﺍﺭﯾﺪ‪.‬‬

‫‪Farjadp@live.com‬‬
‫‪U‬‬ ‫‪U‬‬ ‫‪faedu.ir@gmail.com‬‬
‫‪U‬‬ ‫‪U‬‬ ‫ﻣﺮﺗﻀﯽ ﭘﻮﺭﻣﺤﻤﺪ ‪0912 – 283 0 795‬‬

‫ﭘﺎﯾﺎﻥ ﺑﺨﺶ ﺍﻭﻝ ﺍﺯ ﻓﺼﻞ ﺍﻭﻝ‬


‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪14‬‬

‫ﺩﺭ ﺍﻳﻦ ﺑﺨﺶ ﻣﻲ ﺧﻮﺍﻧﻴﺪ‬

‫ﻓﺼﻞ ﺍﻭﻝ‬
‫* ﺷﺮﻭﻉ ﺑﺎ ﯾﮏ ﭘﺮﻭژﻩ ﺧﺎﻟﯽ‬

‫* ﺳﺎﺧﺖ ﺩﯾﺘﺎﺑﻴﺲ‬

‫* ﺳﺎﺧﺖ ‪MODEL‬‬

‫* ﺳﺎﺧﺖ ‪CONTROLLER‬‬

‫ﺑﺨﺶ ﺩﻭﻡ‬ ‫* ﺳﺎﺧﺖ ‪VIEWS‬‬

‫ﺳﺎﺧﺖ ﻳﻚ ﭘﺮﻭژﻩ ﻣﻌﻤﻮﻟﻲ‬

‫ﺑﺎ ‪ASP.NET MVC‬‬


‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪15‬‬

‫ﺩﺭ ﻓﺼﻞ ﻗﺒﻞ ﻣﺎ ﺩﺭ ﻣﻮﺭﺩ ﻣﻘﺎﻫﻴﻢ ﭘﺎﯾﻪ ﺍی ﻭ ﻫﻤﭽﻨﻴﻦ ﺍﻫﺪﺍﻑ ﻭ ﻧﮑﺎﺗﯽ ﭘﻴﺮﺍﻣﻮﻥ ‪ ASP.NET MVC‬ﺻﺤﺒﺖ ﮐﺮﺩﯾﻢ ‪ .‬ﺩﺭ ﺍﯾﻦ ﻓﺼﻞ ﺩﺭ‬
‫ﺍﺩﺍﻣﻪ ﻣﺒﺤﺚ ﻗﺒﻠﯽ ﺷﺮﻭﻉ ﺑﻪ ﺳﺎﺧﺖ ﯾﮏ ﭘﺮﻭژﻩ ﻣﻌﻤﻮﻟﯽ ﻫﻤﺮﺍﻩ ﺑﺎ ﺩﯾﺘﺎﺑﻴﺲ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪ .‬ﺍﺯ ﻧﮑﺎﺕ ﻭ ﺗﺮﻓﻨﺪﻫﺎی ﻃﺮﺍﺣﯽ‬
‫)‪ (DESIGN‬ﻧﻴﺰ ﭼﺸﻢ ﭘﻮﺷﯽ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﺑﻴﺸﺘﺮ ﺑﻪ ﺍﺻﻮﻝ ﻭ ﻧﮑﺎﺕ ﻣﻬﻢ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ ‪.‬ﻫﺪﻑ ﺭﻭﺷﻦ ﺷﺪﻥ‬
‫ﻣﻔﺎﻫﻴﻢ ﺑﻨﻴﺎﺩی ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺗﺤﺖ ‪ ASP.NET MVC‬ﻣﻴﺒﺎﺷﺪ‪.‬‬

‫‪ -----‬ﺍﯾﻦ ﻗﺴﻤﺖ ﺩﺭ ﺁﯾﻨﺪﻩ ﮐﺎﻣﻞ ﻣﯽ ﺷﻮﺩ ‪------‬‬

‫‪ ‬ﺷﺮﻭﻉ ﻛﺎﺭ ﺑﺎ ﭘﺮﻭژﻩ ﺧﺎﻟﻲ!!‬

‫ﺑﺮﯾﻢ ﺗﺎ ﺍﻭﻟﻴﻦ ﭘﺮﻭژﻩ ی ﺭﺳﻤﯽ ﺧﻮﺩﻣﻮﻥ ﺭﻭ ﺷﺮﻭﻉ ﮐﻨﻴﻢ!!!! ﺧﻮﺏ ﺩﺭ ﺍﯾﻨﺠﺎ ﻣﻴﺒﺎﯾﺴﺖ ﺍﺑﺘﺪﺍ ﯾﮏ ﭘﺮﻭژﻩ ﺍﯾﺠﺎﺩ ﮐﻨﻴﻢ ﻭ ﺳﭙﺲ‬
‫ﻣﺤﺘﻮﺍی ﺻﻔﺤﺎﺕ ﺍﻥ ﺭﺍ ﭘﺎک ) ﺣﺬﻑ ( ﻧﻤﺎﯾﻴﻢ‪ ...‬ﭼﻄﻮﺭ؟؟ ﻣﻄﺎﺑﻖ ﻣﺮﺍﺣﻞ ﺯﯾﺮ‪:‬‬

‫‪ - ١‬ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺭﺍ ﺑﺎﺯ ﻣﯽ ﮐﻨﻴﻢ‪.‬‬


‫‪ - ٢‬ﺍﺯ ﻣﻨﻮی ﺍﺳﺘﺎﺭﺕ ‪ ،‬ﭘﺮﻭژﻩ ﺟﺪﯾﺪ ﺭﺍ ﺍﻧﺘﺤﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪( Menu Option File> New Project ) .‬‬
‫‪ - ٣‬ﺍﺯ ﭘﻨﺠﺮﻩ ﺑﺎﺯ ﺷﺪﻩ ﺯﺑﺎﻥ ‪ C#‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻭ ﮔﺰﯾﻨﻪ ‪ ASP.NET MVC Web Application‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‬

‫‪ - ۴‬ﻧﺎﻣﯽ ﺑﺮﺍی ﺍﯾﻦ ﭘﺮﻭژﻩ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪ .‬ﺑﻨﺪﻩ ﻧﺎﻡ ‪ ToyStore‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﻩ ﺍﻡ‪.‬‬
‫ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺩﺭ ﺑﺨﺶ ﺍﻭﻝ ﮔﻔﺘﻢ ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﺑﺮ ﺭﻭی ﮔﺰﯾﻨﻪ ‪ OK‬ﮐﻠﻴﮏ ﻣﯽ ﮐﻨﻴﺪ ﯾﮏ ﭘﻨﺠﺮﻩ ﻣﺤﺎﻭﺭﻩ ﺍی ﺑﺎﺯ ﻣﯽ ﺷﻮﺩ‬
‫ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺑﺎﯾﺴﺖ ﺁﻥ ﺭﺍ ﻧﻴﺰ ‪ OK‬ﻧﻤﺎﯾﻴﺪ‪.‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪16‬‬

‫ﻫﻤﭽﻨﻴﻦ ﺩﺭ ﺑﺨﺶ ﺍﻭﻝ ﻧﻴﺰ ﺩﺭ ﺑﺎﺭﻩ ﺻﻔﺤﺎﺗﯽ ﮐﻪ ﺑﻪ ﻃﻮﺭ ﺧﻮﺩﮐﺎﺭ ﺗﻮﺳﻂ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮﻧﺪ ﺻﺤﺒﺖ‬
‫ﮐﺮﺩﻡ‪ .‬ﻣﻄﺎﺑﻖ ﺁﻧﭽﻪ ﺩﺭ ﺯﯾﺮ ﻣﯽ ﮔﻮﯾﻢ ﻓﺎﯾﻞ ﻫﺎﯾﯽ ﺭﺍ ﺍﺯ ﭘﺮﻭژﻩ ﺣﺬﻑ ﻧﻤﺎﯾﻴﺪ‪:‬‬

‫‪C# CODE‬‬

‫‪\Controllers\HomeController.cs‬‬
‫‪\Controllers\HomeControllerTest.cs‬‬
‫‪\View\Home\About.aspx‬‬
‫‪\View\Home\Index.aspx‬‬

‫‪VB CODE‬‬

‫‪\Controllers\HomeController.vb‬‬
‫‪\Controllers\HomeControllerTest.vb‬‬
‫‪\View\Home\About.aspx‬‬
‫‪\View\Home\Index.aspx‬‬

‫‪ ‬ﺳﺎﺧﺖ ﺩﻳﺘﺎﺑﻴﺲ‬

‫ﻣﺎ ﺑﺮﺍی ﺍﯾﻦ ﭘﺮﻭژﻩ ﻧﻴﺎﺯ ﺑﻪ ﯾﮏ ﺩﯾﺘﺎﺑﻴﺴﯽ ﺩﺍﺭﯾﻢ ﺗﺎ ﻣﺤﺘﻮﯾﺎﺕ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺩﺭ ﺁﻥ ﺫﺧﻴﺮﻩ ﮐﻨﻴﻢ‪ .‬ﻧﻮﻉ ﺩﯾﺘﺎﺑﻴﺲ ﻣﻬﻢ ﻧﻴﺴﺖ ﺯﯾﺮﺍ‬
‫‪ ASP.NET MVC‬ﺑﺎ ﺗﻤﺎﻣﯽ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍﺑﻄﻪ ی ﺧﻮﺑﯽ ﺩﺍﺭﺩ ﻭ ﺁﻧﻬﺎ ﺭﺍ ﭘﺸﺘﻴﺒﺎﻧﯽ ﻣﯽ ﻧﻤﺎﯾﺪ ﻣﻨﺠﻤﻠﻪ ‪Oracle, MySql ,‬‬
‫‪ Microsoft Sql Server‬ﻭ ‪...‬‬

‫ﺩﺭ ﺍﯾﻦ ﮐﺘﺎﺏ ) ﻭ ﺍﺻﻮﻻ ﺗﻤﺎﻣﯽ ﻋﺰﯾﺰﺍﻧﯽ ﮐﻪ ﺑﺎ ﻣﺤﺼﻮﻻﺕ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﮐﺎﺭ ﻣﯽ ﮐﻨﻨﺪ ( ﺑﻨﺪﻩ ﺍﺯ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ی ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ‬
‫ﯾﻌﻨﯽ ‪ SQL Server‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﻧﻤﺎﯾﻢ‬

‫ﺑﺮﺍی ﺳﺎﺧﺖ ﺩﯾﺘﺎﺑﻴﺲ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﺭﺍ ﺩﺭ ﻫﻤﺎﻥ ﻣﺤﻴﻄﯽ ﮐﻪ ﻫﺴﺘﻴﻢ ﯾﻌﻨﯽ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ‪ ،‬ﻃﯽ ﻣﯽ ﮐﻨﻴﻢ‪:‬‬

‫‪ - ١‬ﺑﺮ ﺭﻭی ﻓﻮﻟﺪﺭ ‪ App_Data‬ﮐﻠﻴﮏ ﺳﻤﺖ ﺭﺍﺳﺖ ) ‪ ( Right Click‬ﻣﯽ ﮐﻨﻴﻢ‬


‫‪ - ٢‬ﺍﺯ ﻣﻨﻮی ﻇﺎﻫﺮ ﺷﺪﻩ ﺍﺿﺎﻓﻪ ﻭ ﺳﭙﺲ ﺁﯾﺘﻢ ﺟﺪﯾﺪ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ) ‪( Add>New Item‬‬
‫‪ - ٣‬ﺩﺭ ﭘﻨﺠﺮﻩ ﺭﻭﺑﺮﻭ ﮔﺰﯾﻨﻪ ی ‪ SQL Server database‬ﺭﺍ ﺑﺮ ﻣﯽ ﮔﺰﯾﻨﻴﻢ ﻭ ﻧﺎﻣﯽ ﺑﺮﺍی ﺍﻥ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪17‬‬

‫‪ - ۴‬ﻭ ﺩﺭ ﻧﻬﺎﯾﺖ ﺑﺮ ﺭﻭی ﮔﺰﯾﻨﻪ ‪ ADD‬ﮐﻠﻴﮏ ﮐﻨﻴﺪ‬

‫ﺑﻌﺪ ﺍﺯ ﺍﯾﻨﮑﻪ ﺷﻤﺎ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺳﺎﺧﺘﻴﺪ ﻧﻴﺎﺯ ﺩﺍﺭﯾﺪ ﺗﺎ ﺟﺪﺍﻭﻝ ﺁﻥ ﻫﻤﺮﺍﻩ ﺑﺎ ﻓﻴﻠﺪ ﻫﺎی ﺁﻥ ﺟﺪﺍﻭﻝ ﺭﺍ ﺑﺴﺎﺯﯾﻢ‪ .‬ﺑﻨﺪﻩ ﺑﺮﺍی ﺍﯾﻦ ﭘﺮﻭژﻩ‬
‫ﯾﮏ ﻓﺮﻭﺷﮕﺎﻩ ﻓﺮﻭﺵ ﺍﺳﺒﺎﺏ ﺑﺎﺯی ﺍﻧﺘﺨﺎﺏ ﻧﻤﻮﺩﻩ ﺍﻡ ) ﺑﻪ ﺧﺎﻃﺮ ﮐﻮﺩک ﺩﺭﻭﻧﻢ !!! ( ﺑﻪ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﺑﺎ ﺩﻗﺖ ﻧﮕﺎﻩ ﮐﻨﻴﺪ ﺗﺎ ﻣﺮﺍﺣﻞ‬
‫ﺳﺎﺧﺖ ﺟﺪﻭﻝ ﻣﺤﺼﻮﻻﺕ ﺭﺍ ﻣﺘﻮﺟﻪ ﺷﻮﯾﺪ‪:‬‬

‫‪ - ۵‬ﺍﺯ ﻓﻮﻟﺪﺭ ‪ App_Data‬ﻭ ﻓﺎﯾﻞ ‪ ) ToyStore.db‬ﯾﻌﻨﯽ ﻫﻤﺎﻥ ﺩﯾﺘﺎﺑﻴﺴﯽ ﮐﻪ ﺩﺭ ﻣﺮﺣﻠﻪ ‪ ٣‬ﻧﺎﻣﮕﺬﺍﺭی ﮐﺮﺩﯾﻢ ( ﺍﻧﺘﺨﺎﺏ ﻭ ﺩﺍﺑﻞ‬
‫ﮐﻠﻴﮏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ ﺗﺎ ‪ Server Explorer‬ﺑﺎﺯ ﺷﻮﺩ‪.‬‬
‫‪ - ۶‬ﺍﺯ ﭘﻨﺠﺮﻩ ﺑﺎﺯ ﺷﺪﻩ ﺑﺮ ﺭﻭی ‪ Tables‬ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ‪ Add New Table‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪.‬‬
‫‪ - ٧‬ﻣﺤﻴﻄﯽ ﻣﺎﻧﻨﺪ ﺷﮑﻞ ﺯﯾﺮ ﻇﺎﻫﺮ ﻣﯽ ﮔﺮﺩﺩ‪.‬‬

‫‪ - ٨‬ﻣﻄﺎﺑﻖ ﻓﻬﺮﺳﺖ ﺯﯾﺮ ﻓﻴﻠﺪ ﻫﺎ ﺭﺍ ﭘﺮ ﻧﻤﺎﯾﻴﺪ ) ﺩﺭ ﺁﯾﻨﺪﻩ ﯾﺎ ﺩﺭ ﮐﺘﺎﺑﯽ ﺟﺪﺍﮔﺎﻧﻪ ﺩﺭ ﻣﻮﺭﺩ ﻭﯾﮋﮔﯽ ﻫﺎی ﻭ ﺑﻪ ﻃﻮﺭ ﮐﻞ ﺳﺎﺧﺖ‬
‫ﺟﺪﺍﻭﻝ ﺩﺭ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ‪ Microsoft Sql Server‬ﺻﺤﺒﺖ ﻣﯽ ﮐﻨﻢ (‬

‫‪Column Name‬‬ ‫‪Data Type‬‬ ‫‪Allow Nulls‬‬


‫‪Id‬‬ ‫‪Int‬‬ ‫‪False‬‬
‫‪Name‬‬ ‫)‪Nvarchar(100‬‬ ‫‪False‬‬
‫‪Description‬‬ ‫)‪Nvarchar(max‬‬ ‫‪False‬‬
‫‪Price‬‬ ‫‪money‬‬ ‫‪False‬‬

‫ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ‬


‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪18‬‬

‫‪ - ٩‬ﻓﻴﻠﺪ ﺍﻭﻝ ﯾﻌﻨﯽ ‪ Id‬ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ‪ identity‬ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ ﻭ ﺁﻥ ﺭﺍ ﺑﺮﺍﺑﺮ ‪ YES‬ﻣﯽ ﮔﺬﺍﺭﯾﻢ ) ﻣﻄﺎﺑﻖ ﺷﮑﻞ (‬

‫‪- ١٠‬ﻭ ﻫﻤﭽﻨﻴﻦ ﺍﯾﻦ ﻓﻴﻠﺪ ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﮐﻠﻴﺪ ﺍﺻﻠﯽ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ ) ﺑﺮ ﺭﻭی ﻓﻴﻠﺪ ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ﮔﺰﯾﻨﻪ ‪Set Primary‬‬
‫‪ Key‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪(.‬‬

‫‪- ١١‬ﺣﺎﻝ ﮐﺎﻓﻴﺴﺖ ﺑﺮﺍی ﺫﺧﻴﺮﻩ ﺩﮐﻤﻪ ‪ Save‬ﺭﺍ ﺑﺰﻧﻴﺪ ﻭ ﯾﺎ ﺍﺯ ﺭﻭی ﮐﻴﺒﻮﺭﺩ ﺩﮐﻤﻪ ﻫﺎی ‪ CTRL + S‬ﺭﺍ ﻫﻤﺰﻣﺎﻥ ﻓﺸﺎﺭ ﺩﻫﻴﺪ‬
‫‪- ١٢‬ﺩﺭ ﺍﯾﻦ ﻣﺮﺣﻠﻪ ﺍﺯ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﻫﺪ ﻧﺎﻣﯽ ﺑﺮﺍی ﺍﯾﻦ ﺟﺪﻭﻝ ﺧﻮﺩ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪ .‬ﺑﻨﺪﻩ ﺩﺭ ﺍﯾﻨﺠﺎ ﻧﺎﻡ ‪ Product‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ‬
‫ﮐﻨﻢ‪.‬‬

‫ﺗﺒﺮﯾﮏ ﻣﯽ ﮔﻢ ﺷﻤﺎ ﺍﻭﻟﻴﻦ ﺟﺪﻭﻝ ﺧﻮﺩ ﺭﺍ ﺳﺎﺧﺘﻴﺪ ﻭ ﺍﻭﻟﻴﻦ ﺁﺟﺮ ﺍﯾﻦ ﺳﺎﺧﺘﻤﺎﻥ ﺭﺍ ﺑﻨﺎ ﻧﻬﺎﺩﯾﺪ ) ﺑﻨﺎﺯﻡ ﺑﻪ ﺍﯾﻦ ﺍﺩﺑﻴﺎﺕ ( ‪ .‬ﺣﺎﻝ ﺑﺮﺍی‬
‫ﻧﻤﻮﻧﻪ ﯾﮏ ﺳﺮی ﺩﺍﺩﻩ ﻣﻌﻤﻮﻟﯽ ﻭ ﺗﺴﺖ ﻭﺍﺭﺩ ﻣﯽ ﮐﻨﻴﻢ‪ .‬ﺑﺎ ﮐﻠﻴﮏ ﺳﻤﺖ ﺭﺍﺳﺖ ﺑﺮ ﺭﻭی ﻧﺎﻡ ﺟﺪﻭﻝ )ﺍﺯ ﻗﺴﻤﺖ‪Server Explorer‬‬
‫ﻭ ﺑﺎ ﮐﻠﻴﮏ ﺑﺮ ﺭﻭی ﻋﻼﻣﺖ ‪ ( Table +‬ﻭ ﺍﻧﺘﺨﺎﺏ ﮔﺰﯾﻨﻪ ‪ Show Table Data‬ﻣﯽ ﻧﻮﺍﻧﻴﺪ ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﻴﺪ‪.‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪19‬‬

‫ﺣﺎﻝ ﮐﻪ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺍﯾﺠﺎﺩ ﻧﻤﻮﺩﻩ ﺍﯾﻢ ﻣﯽ ﺭﻭﯾﻢ ﺳﺮﺍﻍ ‪ MODEL‬ﺍﯾﻦ ﭘﺮﻭژﻩ‬

‫‪ ‬ﺳﺎﺧﺖ ﻣﺪﻝ ) ‪( MODEL‬‬

‫ﻣﺎ ﺑﺮﺍی ﻓﻬﻤﺎﻧﺪﻥ ﺑﻪ ﺩﯾﺎﺗﺒﻴﺲ ﻧﻴﺎﺯ ﺩﺍﺭﯾﻢ ﺗﺎ ﻣﺪﻟﯽ ﺍﺯ ﮐﻼﺱ ﻫﺎ ﺭﺍ ﺑﺴﺎﺯﯾﻢ‪ .‬ﺭﺍﺣﺖ ﺗﺮﯾﻦ ﺭﺍﻩ ﺳﺎﺧﺖ ﮐﻼﺱ ﻫﺎ ‪ ،‬ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ‬
‫ﻧﻘﺸﻪ ﺭﺍﺑﻄﻪ ﺍی ﺷﯽ ﮔﺮﺍ ﮐﻪ ﻫﻤﺎﻥ )‪ Object Relational Mapping(ORM‬ﺍﺳﺖ ) ﺑﺒﺨﺸﻴﺪ ﺧﻴﻠﯽ ﺑﺪ ﺗﺮﺟﻤﻪ ﮐﺮﺩﻡ‪ .( ...‬ﺍﯾﻦ‬
‫‪ ORM‬ﺍﺑﺰﺍﺭﯾﺴﺖ ﮐﻪ ﺑﻪ ﺻﻮﺭﺕ ﺍﺗﻮﻣﺎﺗﻴﮏ ﺍﺯ ﺩﯾﺘﺎﺑﻴﺲ ﮐﻼﺱ ﻫﺎ ﺭﺍ ﻣﯽ ﺳﺎﺯﺩ‪ ) .‬ﺍﯾﻦ ﺭﺍﺣﺖ ﺗﺮﯾﻦ ﺗﻮﺿﻴﺤﯽ ﺑﻮﺩ ﮐﻪ ﻣﻴﺸﺪ ﺩﺍﺩ (‬

‫ﺷﻤﺎ ﺑﻪ ﺩﻟﺨﻮﺍﻩ ﺧﻮﺩ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ‪ ORM‬ﻫﻤﺮﺍﻩ ‪ ASP.NET MVC‬ﮐﻪ ﺑﻪ ﺻﻮﺭﺕ ﻓﺮﯾﻤﻮﺭک ﺍﺳﺖ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ‬
‫‪ ASP.NET MVC‬ﺑﺎ ﺗﮑﻨﻮﻟﻮژی ﻫﺎی ﻣﺨﺘﻠﻒ ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﺩﯾﺘﺎﺑﻴﺲ ﻣﺎﻧﻨﺪ ‪ NHibernate ، Microsoft LINQ to SQL‬ﻭ ﻫﻤﭽﻨﻴﻦ‬
‫‪ Microsoft Entity Framework‬ﻣﻄﺎﺑﻘﺖ ﻭ ﺳﺎﺯﮔﺎﺭی ﺩﺍﺭﺩ‪.‬‬

‫ﺑﻨﺪﻩ ﺩﺭ ﺍﯾﻦ ﮐﺘﺎﺏ ﺍﺯ ‪ Microsoft Entity Framework‬ﺑﺮﺍی ﺳﺎﺧﺖ ﻣﺪﻝ ﮐﻼﺱ ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻢ‪ .‬ﺑﻨﺪﻩ ﺍﺯ ﺍﯾﻦ ﺗﮑﻨﻮﻟﻮژی‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻢ ﭼﻮﻥ ﺍﻋﺘﻘﺎﺩ ﺩﺍﺭﻡ ) ﻭ ﻓﮑﺮ ﮐﻨﻢ ﺗﻮ ﺳﺎﯾﺖ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﺑﻮﺩ ﮐﻪ ﺧﻮﻧﺪﻡ ( ﺍﯾﻦ ﺭﺍﻩ ﺣﻞ ﭘﻴﺸﻨﻬﺎﺩی ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ‬
‫ﺑﺮﺍی ﺩﺳﺘﺮﺳﯽ ﺑﻪ ﺩﺍﺩﻩ ﺍﺳﺖ‪.‬‬

‫ﺣﺎﻝ ﺑﺮﺍی ﺳﺎﺧﺖ ﻣﺪﻝ ﮐﻼﺱ ﻫﺎی ﺩﺍﺩﻩ ﺍی ) ‪: ( Data Model Classes‬‬

‫‪ - ١‬ﺑﺎ ﮐﻠﻴﮏ ﺑﺮ ﺭﻭی ﻓﻮﻟﺪﺭ ‪ MODEL‬ﺍﺯ ﻗﺴﻤﺖ ‪ Solution Explorer‬ﻭ ﺍﻧﺘﺨﺎﺏ ﮔﺰﯾﻨﻪ ‪Add>New Item‬‬
‫‪ - ٢‬ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺳﻤﺖ ﭼﭗ ﮐﻪ ﻫﻤﺎﻥ ﮔﺮﻭﻩ ﻫﺎ ﺍﺳﺖ ﮔﺰﯾﻨﻪ ‪ Data‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻭ ﺍﺯ ﻗﺴﻤﺖ ﺳﻤﺖ ﺭﺍﺳﺖ ‪ADO.NET Entity‬‬
‫‪ Data Model‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ ) ﻣﺎﻧﻨﺪ ﺷﮑﻞ ﺯﯾﺮ (‬

‫‪ - ٣‬ﻧﺎﻣﯽ ﺑﺮﺍی ﺍﯾﻦ ﻣﺪﻝ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪ .‬ﺑﻨﺪﻩ ﻧﺎﻡ ‪ ToyStoreDataModel‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﻩ ﺍﻡ‪.‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪20‬‬

‫ﺣﺎﻝ ﻭﺍﺭﺩ ﻣﺮﺣﻠﻪ ﺍی ﺟﺪﯾﺪ ﻣﯽ ﺷﻮﯾﻢ‪ .‬ﭘﺲ ﺍﺯ ﺍﯾﻨﮑﻪ ﺩﮐﻤﻪ ‪ Add‬ﺭﺍ ﮐﻠﻴﮏ ﮐﺮﺩﯾﻢ ﻭﺍﺭﺩ ﻣﺮﺣﻠﻪ ﻭﯾﺰﺍﺭﺩی ﻣﯽ ﺷﻮﯾﻢ‪.‬‬
‫ﻣﻄﺎﺑﻖ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﻋﻤﻞ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪:‬‬
‫‪ - ١‬ﺍﺯ ﻣﺮﺣﻠﻪ ﺍﻭﻝ ﮔﺰﯾﻨﻪ ی ‪ Generate from database‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ ﻭ ‪ Next‬ﺭﺍ ﻣﯽ ﺯﻧﻴﻢ‪.‬‬

‫‪ - ٢‬ﺩﺭ ﻣﺮﺣﻠﻪ ﺑﻌﺪی ﻣﯽ ﺑﺎﯾﺴﺖ ﮐﺎﻧﮑﺸﻦ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ‪ .‬ﻭ ﻧﺎﻣﯽ ﮐﻪ ﺍﯾﻦ ﮐﺎﻧﮑﺸﻦ ﺩﺭ ﻓﺎﯾﻞ ‪web.cofig‬‬
‫ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﺪ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ‪.‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪21‬‬

‫‪ - ٣‬ﺩﺭ ﺍﯾﻦ ﻣﺮﺣﻠﻪ ﻣﺪﻝ ﺷﯽ ﺍﺯ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪ .‬ﺩﺭ ﺍﯾﻦ ﻗﺴﻤﺖ ﺟﺪﺍﻭﻟﯽ ﺭﺍ ﮐﻪ ﻣﯽ ﺧﻮﺍﻫﻴﻢ ﺑﺮ ﺭﻭی ﺁﻧﻬﺎ‬
‫ﺍﻋﻤﺎﻟﯽ ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ‪ .‬ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﻓﻘﻂ ﺟﺪﻭﻝ ‪ Product‬ﻣﻮﺟﻮﺩ ﺍﺳﺖ‪ .‬ﭘﺲ ﺁﻥ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ‬
‫ﻧﻤﺎﯾﻴﻢ‪ .‬ﻭ ﻧﺎﻣﯽ ﺑﺮﺍی ﻓﻀﺎی ﻧﺎﻣﯽ ) ‪ ( namespace‬ﺁﻥ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﮐﻨﻴﻢ‪ .‬ﺑﻨﺪﻩ ﺩﺭ ﺍﯾﻨﺠﺎ ﻧﺎﻡ ‪ Models‬ﺭﺍ ﺑﺮﮔﺰﯾﺪﻡ‪.‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪22‬‬

‫‪ - ۴‬ﻭ ﺩﺭ ﻧﻬﺎﯾﺖ ﺑﺮ ﺭﻭی ﺩﮐﻤﻪ ‪ Finish‬ﮐﻠﻴﮏ ﻣﯽ ﮐﻨﻴﻢ‪.‬‬

‫ﻣﻼﺣﻈﻪ ﻣﯽ ﮐﻨﻴﻢ ﮐﻪ ﻓﻀﺎﻫﺎی ﻧﺎﻣﯽ ﺑﻪ ﻓﻮﻟﺪﺭ ‪ Reference‬ﺍﺿﺎﻓﻪ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﻪ ﻓﻮﻟﺪﺭ ‪ Models‬ﻧﻴﺰ ﯾﮏ ﻓﺎﯾﻞ ﺍﺿﺎﻓﻪ‬
‫ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﻭ ﺩﺭ ﺻﻔﺤﻪ ﭘﻴﺶ ﺭﻭ ﻇﺎﻫﺮی ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺩﯾﺪﻩ ﻣﯽ ﺷﻮﺩ‬

‫ﺭﺍﺣﺖ ﺗﺮﯾﻦ ﻭ ﻣﺤﺘﻤﻞ ﺗﺮﯾﻦ ﻋﻤﻞ ﺍﯾﻦ ﺍﺳﺖ ﮐﻪ ﺷﻤﺎ ﺩﺭ ﺍﯾﻦ ﺻﻔﺤﻪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﮐﻼﺱ ﻫﺎی ﺍﯾﺠﺎﺩ ﺷﺪﻩ ﺭﺍ ﻣﺘﻨﺎﺳﺐ ﺑﺎ ﺭﻭﻧﺪ ﭘﺮﻭژﻩ‬
‫ﻭ ﻧﻮﻉ ﻧﺎﻣﮕﺬﺍﺭی ﻫﺎی ) ﭘﺮﺳﺘﻴﮋ ﮐﺎﺭی ﻭ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﮐﺎﺭی ﻫﺮ ﺷﺨﺺ ( ﺧﻮﺩ ﺗﻐﻴﻴﺮ ﺩﻫﻴﺪ‪ .‬ﮐﺎﻓﻴﺴﺖ ﺑﺎ ﺩﺍﺑﻞ ﮐﻠﻴﮏ ﻭ ﯾﺎ ﮐﻠﻴﮏ‬
‫ﺳﻤﺖ ﺭﺍﺳﺖ ﻭ ﺍﻧﺘﺨﺎﺏ ﮔﺰﯾﻨﻪ ‪ Rename‬ﺍﯾﻦ ﻋﻤﻞ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﻴﺪ‪.‬‬

‫ﺩﺭ ﺍﯾﻦ ﻣﺮﺣﻠﻪ ﺗﻮﺍﻧﺴﺘﻴﻢ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺗﻮﺍﻧﺴﺘﻴﻢ ‪ Data Model Classes‬ﯾﺎ ﻫﻤﺎﻥ ﻣﺪﻝ ﮐﻼﺱ ﻫﺎی ﺩﺍﺩﻩ ﺍی ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﻨﻴﻢ‪ .‬ﻣﺎ ﺍﺯ‬
‫ﺍﯾﻦ ﮐﻼﺱ ﻫﺎ ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﺩﯾﺘﺎﺑﻴﺲ ﺧﻮﺩﻣﺎﻥ ) ﮐﻪ ﺑﺮﺍی ﺑﻨﺪﻩ ‪ ( ToyStoreDB‬ﻫﻤﺮﺍﻩ ﺑﺎ ﺭﺍﺑﻂ ﻫﺎی ﺑﺮﻧﺎﻣﻪ ﺍی ‪ASP.NET‬‬
‫‪ MVC‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﺯﺑﺎﻥ ﺳﺎﺩﻩ ﺗﺮ ‪ :‬ﯾﻌﻨﯽ ﺑﻪ ﮐﻤﮏ ﺍﯾﻦ ﮐﻼﺱ ﻫﺎ ﻣﯽ ﺗﻮﺍﻧﻴﻢ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺩﺭ ‪ MVC‬ﻧﺸﺎﻥ ﺩﻫﻴﻢ‪.‬‬

‫‪ ‬ﺳﺎﺧﺖ ﻛﻨﺘﺮﻟﺮ ﻫﺎ ) ‪( Controllers‬‬

‫ﮐﻨﺘﺮﻟﺮﻫﺎ ) ‪ ( Controllers‬ﺩﺭ ‪ ASP.NET MVC Application‬ﻫﺎ ﺟﺮﯾﺎﻥ ﺍﺟﺮﺍ ﺷﺪﻥ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﮐﻨﺘﺮﻝ ﻣﯽ ﮐﻨﻨﺪ‪ .‬ﮐﻨﺘﺮﻟﯽ ﮐﻪ ﺍﯾﻦ‬
‫ﺩﺭﺧﻮﺍﺳﺖ ﺭﺍ ﻣﯽ ﺩﻫﺪ ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﻣﯽ ﺑﺎﺷﺪ ﻭ ﻧﺎﻡ ﺁﻥ ﮐﻨﺘﺮﻟﺮ ‪ Home‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﻣﺎ ﺍﺣﺘﻴﺎﺝ ﺩﺍﺭﯾﻢ ﺗﺎ ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﺭﺍ‬
‫ﺍﯾﺠﺎﺩ ﮐﻨﻴﻢ‪ ) .‬ﺑﻪ ﺯﺑﺎﻥ ﺳﺎﺩﻩ ﺗﺮ ﺍﯾﻨﺠﻮﺭ ﺑﮕﻢ ‪ :‬ﻫﻤﻮﻧﻄﻮﺭ ﮐﻪ ﻭﻗﺘﯽ ﻣﯽ ﺧﻮﺍﻫﻴﻢ ﯾﮏ ﺳﺎﯾﺖ ﺭﺍ ﺑﺮ ﺭﻭی ﻫﺎﺳﺖ ﺁﭘﻠﻮﺩ ﮐﻨﻴﻢ ﺑﺮﺍی‬
‫ﻧﻤﺎﯾﺶ ﺣﺘﻤﺎً ﺑﺎﯾﺪ ﻧﺎﻡ ﺁﻥ ﺻﻔﺤﻪ ﯾﮑﯽ ﺍﺯ ﻣﻮﺍﺭﺩ ‪ index , default‬ﺑﺎﺷﺪ‪ -‬ﺣﺎﻝ ﺁﻧﮑﻪ ﭘﺴﻮﻧﺪ ﺁﻥ ﻣﻬﻢ ﻧﻴﺴﺖ ﭼﻪ ‪ PHP‬ﺑﺎﺷﺪ ﭼﻪ‬
‫‪ HTML‬ﻭ ﭼﻪ ‪( ...‬‬

‫ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﺑﺎﯾﺪ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﺭﺍ ﻃﯽ ﮐﻨﻴﻢ‪:‬‬

‫‪ - ١‬ﺑﺮ ﺭﻭی ﻓﻮﻟﺪﺭ ‪ Controllers‬ﮐﻠﻴﮏ ﺳﻤﺖ ﺭﺍﺳﺖ ﮐﺮﺩﻩ ) ﻭ ﯾﺎ ﺍﺯ ﮐﻠﻴﺪﻫﺎی ﺗﺮﮐﻴﺒﯽ ‪ CTRL+M‬ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ( ﻭ ﺳﭙﺲ‬
‫ﮔﺰﯾﻨﻪ ی ‪ Add Controller‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪.‬‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 23

‫ ﺑﻬﺘﺮ ﺍﺳﺖ ﺍﺯ ﻧﺎﻣﯽ‬.‫ ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﭘﻨﺠﺮﻩ ﺍی ﻇﺎﻫﺮ ﻣﯽ ﺷﻮﺩ ﮐﻪ ﻣﯽ ﺑﺎﯾﺴﺖ ﻧﺎﻣﯽ ﺭﺍ ﺑﺮﺍی ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‬- ٢
‫ ﺗﻴﮏ ﻣﺘﻦ ﭘﺎﯾﻴﻦ ﺍﯾﻦ ﺗﮑﺴﺖ ﺑﺎﮐﺲ ﺭﺍ ﻧﻴﺰ ﻓﻌﺎﻝ‬، HomeController : ‫ﮐﻪ ﺑﻨﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ‬
.‫ﻧﻤﺎﯾﻴﺪ‬

.‫ ﮐﻠﻴﮏ ﻧﻤﺎﯾﻴﺪ‬Add ‫ ﺳﭙﺲ ﺑﺮ ﺭﻭی ﺩﮐﻤﻪ ی‬- ٣

: ‫ﺍﯾﻦ ﺻﻔﺤﻪ ﭘﺲ ﺍﺯ ﺍﯾﺠﺎﺩ ﺷﺎﻣﻞ ﮐﺪ ﻫﺎی ﺯﯾﺮ ﺍﺳﺖ‬

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ToyStore.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/

public ActionResult Index()


{
return View();
}

//
// GET: /Home/Details/5

public ActionResult Details(int id)


{
return View();
}

//
// GET: /Home/Create

public ActionResult Create()


{
return View();
}

//
// POST: /Home/Create
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 24

[HttpPost]
public ActionResult Create(FormCollection collection)
{
try
{
// TODO: Add insert logic here

return RedirectToAction("Index");
}
catch
{
return View();
}
}

//
// GET: /Home/Edit/5

public ActionResult Edit(int id)


{
return View();
}

//
// POST: /Home/Edit/5

[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here

return RedirectToAction("Index");
}
catch
{
return View();
}
}

//
// GET: /Home/Delete/5

public ActionResult Delete(int id)


{
return View();
}

//
// POST: /Home/Delete/5

[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{
try
{
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪25‬‬

‫‪// TODO: Add delete logic here‬‬

‫;)"‪return RedirectToAction("Index‬‬
‫}‬
‫‪catch‬‬
‫{‬
‫;)(‪return View‬‬
‫}‬
‫}‬
‫}‬
‫}‬

‫ﻭﻗﺘﯽ ﻣﺎ ﺩﺭ ﻣﺮﺣﻠﻪ ﺷﻤﺎﺭﻩ ‪ ٢‬ﮔﺰﯾﻨﻪ ‪ Add action methods for Create, Update, and Details scenario‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﯾﻢ ‪،‬‬
‫ﺩﺭ ﮐﺪﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ ﻣﺸﺎﻫﺪﻩ ﻣﯽ ﮐﻨﻴﻢ ﮐﻪ ﺑﻪ ﻃﻮﺭ ﺧﻮﺩﮐﺎﺭ ﺗﻤﺎﻣﯽ ﺍﯾﻦ ﺭﻭﻧﺪﻫﺎ ﺭﺍ ﮐﺪﻧﻮﯾﺴﯽ ﮐﺮﺩﻩ ﻭ ﺩﯾﮕﺮ ﻻﺯﻡ ﻧﻴﺴﺖ ﺗﺎ ﻣﺎ‬
‫ﺩﻭﺑﺎﺭﻩ ﺍﻧﻬﺎ ﺭﺍ ﺩﺭ ﮐﻼﺱ ﻣﺠﺰﺍ ﺑﻨﻮﯾﺴﻴﻢ ﻭ ﺑﻪ ﻣﺸﮑﻼﺕ ﺍﺣﺘﻤﺎﻟﯽ ﺍﻧﺴﺎﻧﯽ ﺑﺮﺧﻮﺭﺩ ﮐﻨﻴﻢ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺩﺭ ﺍﯾﻦ ﺻﻔﺤﻪ ﺷﺎﻣﻞ ﺗﻮﺍﺑﻊ‬
‫ﻣﺘﻔﺎﻭﺗﯽ ﻫﺴﺘﻴﻢ ﮐﻪ ﺗﻮﺿﻴﺢ ﻣﺨﺘﺼﺮی ﺩﺭ ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﻫﺮ ﯾﮏ ﻣﯽ ﺩﻫﻢ‪:‬‬

‫)( ‪ :Index‬ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺸﻔﺮﺽ ﺩﺭ ﺗﻤﺎﻣﯽ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﻋﻤﻞ ﻣﯽ ﮐﻨﺪ ﻭ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻟﻴﺴﺖ ﺗﻤﺎﻣﯽ ﺁﯾﺘﻢ ﻫﺎ ﺭﺍ‬
‫ﻧﻤﺎﯾﺶ ﻣﯽ ﺩﻫﺪ‬

‫)‪ :Details (id‬ﺍﯾﻦ ﻋﻤﻠﮕﺮ ﻣﺸﺨﺼﺎﺕ ﺁﯾﺘﻢ ﻫﺎ ﺭﺍ ﻧﻤﺎﯾﺶ ﻣﯽ ﺩﻫﺪ‪.‬‬

‫)( ‪ :Create‬ﺍﯾﻦ ﻋﻤﻠﮕﺮ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﺁﯾﺘﻢ ﺟﺪﯾﺪ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬

‫)‪ :Create (collection‬ﺍﯾﻦ ﻋﻤﻞ ﻣﯽ ﮐﻨﺪ ﺑﺮﺍی ﻭﺍﺭﺩ ﮐﺮﺩﻥ ﺁﯾﺘﻢ ﺟﺪﯾﺪ ﺑﻪ ﺩﯾﺘﺎﺑﻴﺲ‬

‫)‪ :Edit (id‬ﺍﯾﻦ ﺑﺮﺍی ﻭﯾﺮﺍﯾﺶ ﺁﯾﺘﻢ ﻫﺎی ﻣﻮﺟﻮﺩ ﺑﮑﺎﺭ ﺑﺮﺩﻩ ﻣﯽ ﺷﻮﺩ‪.‬‬

‫)‪ : Edit (id, collection‬ﺟﻬﺖ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﯽ ﺁﯾﺘﻢ ﻫﺎی ﻣﻮﺟﻮﺩ ﺩﺭ ﺩﯾﺘﺎﺑﻴﺲ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺳﺖ‪.‬‬

‫ﺑﻪ ﻃﻮﺭ ﮐﻠﯽ‪ Home Controller ،‬ﺗﻨﻬﺎ ﺭﯾﺸﻪ ی ﻣﻮﺍﺭﺩ ﺑﺎﻻ ﺭﺍ ﺷﺎﻣﻞ ﻣﯽ ﺷﻮﺩ‪ .‬ﻫﺮﭼﻪ ﺑﻪ ﺟﻠﻮ ﺑﺮﻭﯾﻢ ﻭ ﺑﺮ ﺩﺍﻧﺶ ﺧﻮﺩ ﺑﻴﺎﻓﺰﺍﯾﻴﻢ‬
‫ﻣﯽ ﺗﻮﺍﻧﻴﻢ ﮐﺎﺭﺍﯾﯽ ﺍﯾﻦ ﻣﻮﺍﺭﺩ ﺭﺍ ﺑﻬﺘﺮ ﺩﺭک ﮐﻨﻴﻢ ﻭ ﺑﻪ ﺟﺎ ﺍﺯ ﺁﻧﻬﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﻢ‪ .‬ﺩﺭ ﺍﯾﻨﺠﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻧﻤﻮﻧﻪ ﻣﯽ ﺧﻮﺍﻫﻴﻢ ﯾﮏ‬
‫ﺗﻐﻴﻴﺮﺍﺕ ﮐﻮﭼﮑﯽ ﺩﺭ ﺻﻔﺤﻪ ی ‪ Home Controllers‬ﺑﺪﻫﻴﻢ‪ .‬ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺩﺭ ﺁﺩﺭﺱ ‪ Controllers\HomeControllers.cs‬ﺍﯾﻦ ﺻﻔﺤﻪ‬
‫ﺭﺍ ﭘﻴﺪﺍ ﮐﻨﻴﺪ ﻭ ﻣﺎﻧﻨﺪ ﺑﻨﺪﻩ ﮐﺪ ﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ ﺭﺍ ﺑﺎ ﺁﻧﭽﻪ ﺩﺭ ﺯﯾﺮ ﻣﻴﺎﻭﺭﻡ ﺟﺎﺑﺠﺎ ﮐﻨﻴﺪ‪:.‬‬

‫;‪using System.Linq‬‬
‫;‪using System.Web.Mvc‬‬
‫;‪using ToyStore.Models‬‬

‫‪namespace ToyStore.Controllers‬‬
‫{‬
‫‪public class HomeController : Controller‬‬
‫{‬
‫;)(‪private ToyStoreDBEntities _dataModel = new ToyStoreDBEntities‬‬
‫‪//‬‬
‫‪// GET: /Home/‬‬

‫)(‪public ActionResult Index‬‬


‫{‬
‫;))(‪return View(_dataModel.Products.ToList‬‬
‫}‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 26

//
// GET: /Home/Create

public ActionResult Create()


{
return View();
}

//
// POST: /Home/Create

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "Id")]Product productToCreate)
{
if (!ModelState.IsValid)
return View();

try
{
_dataModel.AddToProducts(productToCreate);
_dataModel.SaveChanges();

return RedirectToAction("Index");

}
catch
{
return View();
}
}

//
// GET: /Home/Edit/5

public ActionResult Edit(int id)


{
return View();
}

//
// POST: /Home/Edit/5

[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here

return RedirectToAction("Index");
}
catch
{
return View();
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪27‬‬

‫}‬
‫}‬

‫}‬
‫}‬

‫ﺩﺭ ﺍﺑﺘﺪﺍ ﻣﺎ ﯾﮏ ﻓﻴﻠﺪ ﺍﺧﺘﺼﺎﺻﯽ ﺑﺎ ﻧﺎﻡ ‪ _dataModel‬ﺍﺯ ﻧﻮﻉ ‪ DBStoreEntities‬ﺗﻌﺮﯾﻒ ﮐﺮﺩﯾﻢ‪ ) .‬ﺑﻪ ﺯﺑﻮﻥ ﺧﻮﺩﻣﻮﻥ ﯾﻌﻨﯽ ﺍﺯﺵ ﯾﻪ‬
‫‪ instant‬ﮔﺮﻓﺘﻴﻢ‪ (.‬ﺍﯾﻦ ‪ DBStoreEntities‬ﻧﻴﺰ ﻫﻤﺎﻥ ﮐﻼﺳﯽ ﺍﺳﺖ ﮐﻪ ﻣﺎ ﺑﻪ ﺻﻮﺭﺕ ﻭﯾﺰﺍﺭﺩی ﺩﺭ ﻣﺮﺍﺣﻞ ﻗﺒﻞ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ‪.‬‬

‫ﻣﺎ ﺍﺯ ﺍﯾﻦ ﮐﻼﺱ ﺑﺮﺍی ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﺩﯾﺘﺎﺑﻴﺲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪.‬‬

‫ﺗﺎﺑﻊ ﻋﻤﻠﻴﺎﺗﯽ )(‪ index‬ﻧﻴﺰ ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ ﻟﻴﺴﺖ ﻣﺤﺼﻮﻻﺕ ﺗﻌﺮﯾﻒ ﺷﺪﻩ ﺍﺳﺖ ‪ .‬ﯾﻌﻨﯽ )(‪_dataModel.Products.ToList‬‬
‫ﻟﻴﺴﺖ ﺗﻤﺎﻣﯽ ﻣﺤﺼﻮﻻﺕ ﺭﺍ ﺍﺯ ﺩﯾﺘﺎﺑﻴﺲ ﺑﺮﺍی ﻣﺎ ﺑﺮﻣﯽ ﮔﺮﺩﺍﻧﺪ‪.‬‬

‫ﺩﺭ ﺍﯾﻨﺠﺎ ﺩﻭ ﺗﺎﺑﻊ ﻋﻤﻠﻴﺎﺗﯽ ﺑﺎ ﻧﺎﻡ )(‪ Create‬ﺩﺍﺭﯾﻢ‪ .‬ﺗﺎﺑﻊ ﺍﻭﻟﯽ ﺩﺭ ﺍﺑﺘﺪﺍ ﺟﻬﺖ ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻻﺕ ﺟﺪﯾﺪ ﻋﻤﻞ ﻣﯽ ﻧﻤﺎﯾﺪ‪ .‬ﻭ ﺗﺎﺑﻊ ﺩﻭﻣﯽ‬
‫ﻧﻴﺰ ﻋﻤﻞ ﺩﺭﺝ ﻣﺤﺼﻮﻻﺕ ﺟﺪﯾﺪ ﺩﺭ ﺩﯾﺘﺎﺑﻴﺲ ﺍﺳﺖ‪.‬‬

‫ﺩﺭ ﺣﻘﻴﻘﺖ ﺗﺎﺑﻊ ﺩﻭﻡ )(‪ Create‬ﻋﻤﻞ ﺗﻌﺮﯾﻒ ﻭ ﻗﺒﻮﻝ ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻻﺕ ﺭﺍ ﺑﺮ ﻋﻬﺪﻩ ﺩﺍﺭﺩ‪ .‬ﺩﺭ ﻧﻬﺎﯾﺖ ﺗﺎﺑﻊ ﻋﻤﻠﮕﺮ )(‪ Create‬ﻋﻤﻞ‬
‫ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﺘﺪﻫﺎ ﺟﻬﺖ ﺩﺭﺝ ﻣﺤﺼﻮﻻﺕ ﺑﻪ ﺩﯾﺘﺎﺑﻴﺲ ﻣﯽ ﺑﺎﺷﺪ ﺗﻮﺳﻂ ﮐﺪ ‪:‬‬

‫;)‪_dataModel.AddToProducts (productToCreate‬‬
‫;)( ‪_dataModel.SaveChanges‬‬
‫ﺣﺎﻝ ﺩﺭ ﮐﻨﺘﺮﻟﺮ ‪ Home‬ﻣﺎ ‪ ،‬ﺷﺎﻣﻞ ﻣﻬﻤﺘﺮﯾﻦ ﻭ ﻻﺯﻡ ﺗﺮﯾﻦ ﻣﻮﺍﺭﺩ ﻭ ﮐﺪﻫﺎی ﻣﺮﺑﻮﻁ ﺑﻪ ﺩﯾﺘﺎﺑﻴﺲ ﺍﺳﺖ‪ .‬ﻣﺎ ﻣﯽ ﺗﻮﺍﻧﻴﻢ ﺍﺯ ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ‬
‫ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﯽ ﻣﺤﺼﻮﻻﺕ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﻢ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺍﺯ ﺍﯾﻦ ﮐﻨﺘﺘﺮﻟﺮ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻻﺕ ﺟﺪﯾﺪ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪.‬‬

‫ﺩﺭ ﻧﻬﺎﯾﺖ ﺍﯾﻦ ﺭﺍ ﺍﺿﺎﻓﻪ ﮐﻨﻢ ﮐﻪ ﻫﺮ ﺩﻭ ﺗﺎﺑﻊ ﻋﻤﻠﮕﺮ )(‪ Index‬ﻭ )(‪ Create‬ﺟﻬﺖ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻫﺎی ﺩﺍﺧﻞ ﺩﯾﺘﺎﺑﻴﺲ ﺍﺳﺖ‪ .‬ﺩﺭ‬
‫ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﺍﯾﻦ ﻧﻤﺎﯾﺶ ﯾﺎ ﻫﻤﺎﻥ ‪ Views‬ﺭﺍ ﺑﺎ ﻫﻢ ﺍﯾﺠﺎﺩ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪.‬‬

‫‪ ‬ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﺸﮕﺮ ﻫﺎ ) ‪( View‬‬

‫ﻧﻤﺎﯾﺸﮕﺮ ﻫﺎ ﺩﺭ ‪ MVC‬ﺷﺎﻣﻞ ﺗﻤﺎﻣﯽ ﺗﮓ ﻫﺎی ‪ HTML‬ﻭ ﻧﻤﺎﯾﺸﮕﺮﻫﺎی ﻣﻨﻄﻘﯽ ﻻﺯﻡ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ‪ View‬ﻫﺎ ﺩﺭ ﺻﻔﺤﺎﺕ ‪.HTML‬‬

‫ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﻧﮑﺘﻪ ﺭﺍ ﻫﻢ ﺑﮕﻢ ﮐﻪ ﺷﻤﺎ ﺣﺘﻤﺎً ﻧﺒﺎﯾﺪ ﺑﺮﺍی ﻧﻤﺎﯾﺶ ﺍﺯ ﮐﺪ ﻫﺎ ﻭ ﺍﻟﻤﻨﺖ ﻫﺎی ‪ HTML‬ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ‪ .‬ﺑﺮ ﻓﺮﺽ ﺷﻤﺎ ﻣﯽ‬
‫ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺗﮑﻨﻮﻟﻮژی ﺳﻴﻠﻮﺭﻻﯾﺖ ﺑﺮﺍی ﻇﺎﻫﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ‪.‬‬

‫ﺩﺭ ﻣﺜﺎﻝ ﭘﻴﺶ ﺭﻭ ﮐﻪ ﺗﺎ ﺑﻪ ﺣﺎﻝ ﺍﻧﺠﺎﻡ ﺩﺍﺩﻩ ﺍﯾﻢ‪ ،‬ﻧﻴﺎﺯ ﺑﻪ ﺩﻭ ﺻﻔﺤﻪ ﺑﺮﺍی ﻧﻤﺎﯾﺶ ) ﯾﺎ ﻫﻤﺎﻥ ‪ ( VIEW‬ﺩﺍﺭﯾﻢ‪ .‬ﺻﻔﺤﻪ ﺍﻭﻝ ﯾﺎ ﻫﻤﺎﻥ‬
‫‪ INDEX‬ﻭ ﺻﻔﺤﻪ ﺍﯾﺠﺎﺩ ﯾﺎ ﻫﻤﺎﻥ ‪ . CREATE‬ﻣﺎ ﺑﺮﺍی ﻧﻤﺎﯾﺶ ﻣﺤﺼﻮﻻﺕ ﺍﺯ ‪ INDEX‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻻﺕ‬
‫ﺍﺯ ﺻﻔﺤﻪ ‪ CREATE‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪.‬‬

‫‪ ‬ﺍﻳﺠﺎﺩ ﻭ ﺍﺿﺎﻓﻪ ﻛﺮﺩﻥ ‪: Index View‬‬ ‫‪U‬‬

‫ﺑﺮﺍی ﺷﺮﻭﻉ ﺑﻪ ﺍﯾﺠﺎﺩ ﮐﺮﺩﻥ ﺻﻔﺤﻪ ‪ INDEX‬ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ‪ .‬ﻣﺮﺍﺣﻞ ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺑﺎ ﻫﻢ ﺷﺮﻭﻉ ﻣﯽ ﮐﻨﻴﻢ‪:‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪28‬‬

‫‪ - ١‬ﻗﺒﻞ ﺍﺯ ﻫﺮ ﭼﻴﺰ ﺑﻬﺘﺮ ﺍﺳﺖ ﺍﺑﺘﺪﺍ ﭘﺮﻭژﻩ ﺧﻮﺩ ﺭﺍ ﺑﺴﺎﺯﯾﻢ ) ﻣﻨﻈﻮﺭﻡ ﺩﺭ ﺍﯾﻨﺠﺎ ﻫﻤﻮﻥ ‪ BUILD‬ﺍﺳﺖ(‪ .‬ﺍﺯ ﻣﻨﻮی ‪ Build‬ﮔﺰﯾﻨﻪ‬
‫ﺍﻭﻝ ﮐﻪ ﻫﻤﺎﻥ ‪ Build Solution‬ﺍﺳﺖ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪ .‬ﯾﺎ ﺍﺯ ﮐﻨﺘﺮﻝ ﻫﺎی ﺗﺮﮐﻴﺒﯽ ‪ CTRL+SHIFT+B‬ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﻧﻤﺎﯾﻴﺪ‪.‬‬
‫‪ - ٢‬ﺩﺭ ﺻﻔﺤﻪ ‪ HomeController.cs‬ﺍﺯ ﻗﺴﻤﺖ ﮐﺪﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ ﺑﺮ ﺭﻭی ﺗﺎﺑﻊ )(‪ Index‬ﺳﻤﺖ ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ﺍﺯ‬
‫ﻣﻨﻮی ﻇﺎﻫﺮ ﺷﺪﻩ ﮔﺰﯾﻨﻪ ‪ Add View‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪ ) .‬ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ (‬

‫‪ - ٣‬ﭘﻨﺠﺮﻩ ﺍی ﻇﺎﻫﺮ ﻣﯽ ﺷﻮﺩ‪ .‬ﺩﺭ ﺍﯾﻦ ﭘﻨﺠﺮﻩ ﺍﺑﺘﺪﺍ ﮔﺰﯾﻨﻪ ی ‪ Create a strongly-typed view‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪.‬‬
‫‪ - ۴‬ﺳﭙﺲ ﺍﺯ ﻗﺴﻤﺖ ﭘﺎﯾﻴﻦ ﯾﻌﻨﯽ ‪ view dataclass‬ﮐﻪ ﻓﻌﺎﻝ ﺷﺪﻩ ﺍﺳﺖ ﮐﻼﺱ ‪ ToyStore.Models.Product‬ﺭﺍ ﭘﻴﺪﺍ ﻭ‬
‫ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪.‬‬
‫‪ - ۵‬ﺳﭙﺲ ﺍﺯ ﻟﻴﺴﺖ ﺑﻌﺪی ﯾﻌﻨﯽ ﻗﺴﻤﺖ ‪ view content‬ﮔﺰﯾﻨﻪ ‪ List‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪ .‬ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ‬

‫‪ - ۶‬ﺩﺭ ﻧﻬﺎﯾﺖ ﮔﺰﯾﻨﻪ ‪ Add‬ﺭﺍ ﺑﺰﻧﻴﺪ‪.‬‬

‫ﺩﺭ ﻧﻬﺎﯾﺖ ﯾﮏ ﺳﺮی ﻓﺎﯾﻞ ﺑﻪ ﭘﺮﻭژﻩ ﺷﻤﺎ ﺍﺿﺎﻓﻪ ﻣﯽ ﺷﻮﺩ‪ .‬ﮐﺎﻓﻴﺴﺖ ﭘﺮﻭژﻩ ﺭﺍ ﺍﺟﺮﺍ ﻧﻤﺎﯾﺪ ) ‪ F5‬ﺭﺍ ﺑﺰﻧﻴﺪ ( ﺑﺎ ﺗﺼﻮﯾﺮی ﻣﺸﺎﺑﻪ‬
‫ﺷﮑﻞ ﺯﯾﺮ ﺭﻭﺑﺮﻭ ﻣﯽ ﺷﻮﯾﺪ ﮐﻪ ﻣﺤﺘﻮﯾﺎﺕ ﺩﯾﺘﺎﺑﻴﺲ ﺷﻤﺎ ﺭﺍ ﻫﻤﺮﺍﻩ ﺑﺎ ﻣﺸﺨﺼﺎﺕ‪ /‬ﺣﺬﻑ ‪ /‬ﻭﯾﺮﺍﯾﺶ ‪ /‬ﻭ ﺍﺿﺎﻓﻪ ﺍﺳﺖ‪.‬‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 29

:‫ ﺍﯾﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺖ‬HTML ‫ﭼﻨﺎﻧﭽﻪ ﺑﻪ ﮐﺪﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ ﻣﺮﺍﺟﻌﻪ ﻧﻤﺎﯾﻴﺪ ﻣﺘﻮﺟﻪ ﻣﯽ ﺷﻮﯾﺪ ﮐﻪ ﺍﯾﻦ ﺻﻔﺤﻪ ﺗﻮﺳﻂ ﺗﮓ ﻫﺎی‬

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"


Inherits="System.Web.Mvc.ViewPage<IEnumerable<ToyStore.Models.Product>>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">


Index
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<table>
<tr>
<th></th>
<th>
Id
</th>
<th>
Name
</th>
<th>
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 30

Description
</th>
<th>
Price
</th>
</tr>

<% foreach (var item in Model) { %>

<tr>
<td>
<%: Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |
<%: Html.ActionLink("Details", "Details", new { id=item.Id })%> |
<%: Html.ActionLink("Delete", "Delete", new { id=item.Id })%>
</td>
<td>
<%: item.Id %>
</td>
<td>
<%: item.Name %>
</td>
<td>
<%: item.Description %>
</td>
<td>
<%: String.Format("{0:F}", item.Price) %>
</td>
</tr>

<% } %>

</table>

<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>

</asp:Content>

.‫ﺍﯾﻦ ﺻﻔﺤﻪ ﺷﺎﻣﻞ ﻣﻮﺍﺭﺩ ﻣﺘﻔﺎﻭﺗﯽ ﺍﺳﺖ ﮐﻪ ﺑﻪ ﺑﺮﺭﺳﯽ ﻭ ﺍﯾﺠﺎﺩ ﺗﮏ ﺗﮏ ﺁﻧﻬﺎ ﺧﻮﺍﻫﻴﻢ ﭘﺮﺩﺍﺧﺖ‬

.‫ ﯾﺎ ﻫﻤﺎﻥ ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻝ ﺟﺪﯾﺪ ﺭﺍ ﺑﺎ ﻫﻢ ﺷﺮﻭﻉ ﺑﻪ ﺍﯾﺠﺎﺩ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‬Create New ‫ﺩﺭ ﺍﺑﺘﺪﺍ ﺻﻔﺤﻪ‬

Create New ‫ ﺍﻳﺠﺎﺩ ﺻﻔﺤﻪ‬ U

:‫ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺮﺍﺣﻞ ﺯﯾﺮ ﺑﻪ ﺳﺎﺧﺖ ﻃﺮﺍﺣﯽ ﺍﯾﻦ ﺻﻔﺤﻪ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ‬.‫ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﻣﺤﺼﻮﻝ ﺟﺪﯾﺪ ﻣﺎ ﺑﻪ ﺍﯾﻦ ﺻﻔﺤﻪ ﻧﻴﺎﺯ ﺩﺍﺭﯾﻢ‬

‫ ﺳﻤﺖ ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ﺍﺯ ﻣﻨﻮی ﺑﺎﺯ‬Create() ‫ ﺑﺮ ﺭﻭی ﺗﺎﺑﻊ‬HomeController.cs ‫ ﺩﺭ ﺻﻔﺤﻪ‬،‫ ﻣﻄﺎﺑﻖ ﻣﺮﺣﻠﻪ ﻗﺒﻞ‬- ١
.‫ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‬Add View ‫ﺷﺪﻩ ﮔﺰﯾﻨﻪ‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪31‬‬

‫‪ - ٢‬ﭘﻨﺠﺮﻩ ﺍی ﻇﺎﻫﺮ ﻣﯽ ﺷﻮﺩ‪ .‬ﺩﺭ ﺍﯾﻦ ﭘﻨﺠﺮﻩ ﺍﺑﺘﺪﺍ ﮔﺰﯾﻨﻪ ی ‪ Create a strongly-typed view‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪.‬‬
‫‪ - ٣‬ﺳﭙﺲ ﺍﺯ ﻗﺴﻤﺖ ﭘﺎﯾﻴﻦ ﯾﻌﻨﯽ ‪ view dataclass‬ﮐﻪ ﻓﻌﺎﻝ ﺷﺪﻩ ﺍﺳﺖ ﮐﻼﺱ ‪ ToyStore.Models.Product‬ﺭﺍ ﭘﻴﺪﺍ ﻭ‬
‫ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪.‬‬
‫‪ - ۴‬ﺳﭙﺲ ﺍﺯ ﻟﻴﺴﺖ ﺑﻌﺪی ﯾﻌﻨﯽ ﻗﺴﻤﺖ ‪ view content‬ﮔﺰﯾﻨﻪ ‪ Create‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪ .‬ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ‬

‫‪ - ۵‬ﺩﺭ ﻧﻬﺎﯾﺖ ﺑﺮ ﺭﻭی ﮔﺰﯾﻨﻪ ‪ Add‬ﮐﻠﻴﮏ ﻣﯽ ﻧﻤﺎﯾﻴﻢ‪.‬‬

‫ﺍﯾﻦ ﺻﻔﺤﻪ ﻧﻴﺰ ﺑﻪ ﺻﻮﺭﺕ ﺍﺗﻮﻣﺎﺗﻴﮏ ﺍﯾﺠﺎﺩ ﻣﯽ ﺷﻮﺩ ﻭ ﻣﺤﻞ ﺁﻥ ﺩﺭ ‪ \View\Home\Create.aspx‬ﺍﺳﺖ‪ .‬ﻣﺎﻧﻨﺪ ﺷﮑﻞ ﺯﯾﺮ‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 32

:‫ﮐﻪ ﺷﺎﻣﻞ ﮐﺪﻫﺎی ﺯﯾﺮ ﻣﯽ ﺑﺎﺷﺪ‬

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"


Inherits="System.Web.Mvc.ViewPage<ToyStore.Models.Product>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">


Create
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Create</h2>

<% using (Html.BeginForm()) {%>


<%: Html.ValidationSummary(true) %>

<fieldset>
<legend>Fields</legend>

<div class="editor-label">
<%: Html.LabelFor(model => model.Id) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Id) %>
<%: Html.ValidationMessageFor(model => model.Id) %>
</div>

<div class="editor-label">
<%: Html.LabelFor(model => model.Name) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Name) %>
<%: Html.ValidationMessageFor(model => model.Name) %>
</div>

<div class="editor-label">
<%: Html.LabelFor(model => model.Description) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Description) %>
<%: Html.ValidationMessageFor(model => model.Description) %>
</div>

<div class="editor-label">
<%: Html.LabelFor(model => model.Price) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Price) %>
<%: Html.ValidationMessageFor(model => model.Price) %>
</div>

<p>
<input type="submit" value="Create" />
</p>
</fieldset>
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪33‬‬

‫>‪<% } %‬‬

‫>‪<div‬‬
‫>‪<%: Html.ActionLink("Back to List", "Index") %‬‬
‫>‪</div‬‬

‫>‪</asp:Content‬‬

‫‪ ‬ﻧﺘﻴﺠﻪ ﮔﻴﺮﻱ‬

‫ﺩﺭ ﺍﯾﻦ ﺑﺨﺶ ﻣﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﮑﻨﻮﻟﻮژِی ‪ ASP.NET MVC‬ﯾﮏ ﭘﺮﻭژﻩ ﺳﺎﺩﻩ ﻫﻤﺮﺍﻩ ﺑﺎ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ‪ ..‬ﻫﻤﭽﻨﻴﻦ ‪Model,‬‬
‫‪ View‬ﻭ ‪ Controllers‬ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ‪.‬‬

‫ﺩﺭ ﺍﺑﺘﺪﺍ ﻣﺎ ﯾﮏ ﺩﯾﺘﺎﺑﻴﺲ ﺑﻪ ﻫﻤﺮﺍﻩ ﻣﺪﻝ ﭘﺎﯾﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ‪ .‬ﺑﺮﺍی ﺍﯾﻦ ﮐﺎﺭ ﺍﺯ ‪ Microsoft SQL Server Express‬ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﮐﺮﺩﯾﻢ‪ .‬ﻭ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﮐﻼﺱ ﻫﺎ ﺍﺯ ‪ Microsoft Entity Framework‬ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻮﺩﯾﻢ‪.‬‬

‫ﺩﺭ ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﻣﺎ ﮐﻨﺘﺮﻝ ﻫﺎی ﺻﺤﻪ ﺍﻭﻝ ﺭﺍ ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ‪ .‬ﺑﺮﺍی ﺍﯾﻦ ﮐﺎﺭ ﻧﻴﺰ ﺍﺯ ﻭﺍﯾﺰﺍﺭﺩ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩﯾﻢ ﺗﺎ ﺑﻪ ﺻﻮﺭﺕ‬
‫ﺍﺗﻮﻣﺎﺗﻴﮏ ﺍﯾﺠﺎﺩ ﻧﻤﺎﯾﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ ﯾﮏ ﺳﺮی ﮐﺪ ﺑﺮﺍی ﺩﺳﺘﺮﺳﯽ ﻣﻨﻄﻘﯽ ﺑﻪ ﺩﯾﺘﺎﺑﻴﺲ ﺭﺍ ﻧﻮﺷﺘﻴﻢ‪.‬‬

‫ﻭ ﺩﺭ ﻧﻬﺎﯾﺖ ﻣﺎ ﺩﻭ ﻧﻤﺎﯾﺶ ﺳﺎﺧﺘﻴﻢ ﯾﮑﯽ ﺑﺮﺍی ﻧﻤﺎﯾﺶ ﻣﺤﺼﻮﻻﺕ ﻭ ﺩﯾﮕﺮی ﺑﺮﺍی ﺍﺿﺎﻓﻪ ﮐﺮﺩﻥ ﻣﺤﺼﻮﻝ‪.‬‬

‫ﺑﻪ ﻫﻤﻴﻦ ﺭﺍﺣﺘﯽ‪....‬‬

‫ﺩﺭ ﭘﺎﯾﺎﻥ ﺍﺯ ﺷﻤﺎ ﺩﻭﺳﺘﺎﻥ ﻣﯽ ﺧﻮﺍﻫﻢ ﭼﻨﺎﻧﭽﻪ ﻧﻈﺮ ﯾﺎ ﺍﻧﺘﻘﺎﺩی ﺩﺭﺑﺎﺭﻩ ﺍﯾﻦ ﻣﻄﺎﻟﺐ ﺩﺍﺭﯾﺪ ﺣﺘﻤﺎً ﺑﺎ ﺑﻨﺪﻩ ﺩﺭ ﻣﻴﺎﻥ ﺑﮕﺬﺍﺭﯾﺪ‪.‬‬

‫‪Farjadp@live.com‬‬
‫‪U‬‬ ‫‪U‬‬ ‫‪faedu.ir@gmail.com‬‬
‫‪U‬‬ ‫‪U‬‬ ‫ﻣﺮﺗﻀﯽ ﭘﻮﺭﻣﺤﻤﺪ ‪0912 – 283 0 795‬‬

‫ﭘﺎﯾﺎﻥ ﺑﺨﺶ ﺩﻭﻡ ﺍﺯ ﻓﺼﻞ ﺍﻭﻝ‬


‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪34‬‬

‫ﺩﺭ ﺍﻳﻦ ﺑﺨﺶ ﻣﻲ ﺧﻮﺍﻧﻴﺪ‬

‫* ﺍﯾﺠﺎﺩ ﮐﻨﺘﺮﻟﺮ‬

‫ﻓﺼﻞ ﺍﻭﻝ‬
‫*‬

‫* ﭼﮕﻮﻧﮕﯽ ﻓﺮﺍﺧﻮﺍﻧﯽ ﺍﻋﻤﺎﻝ‬

‫* ﺟﺎﺑﺠﺎﯾﯽ ﺍﻋﻤﺎﻝ ﻧﺎﻣﻔﻬﻮﻡ‬

‫* ﺗﺴﺖ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﻭ ﺍﻋﻤﺎﻝ ﺁﻧﻬﺎ‬

‫ﺑﺨﺶ ﺳﻮﻡ‬

‫ﺩﺭﻙ ﻛﻨﺘﺮﻟﺮﻫﺎ ﻭ ﻧﺤﻮﻩ‬

‫ﻋﻤﻞ ﻛﺮﺩﻥ ﺁﻧﻬﺎ‬


‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪35‬‬

‫ﮐﻨﺘﺮﻟﺮ ﻫﺎی ‪ ASP.Net MVC‬ﻣﺴﺌﻮﻝ ﮐﻨﺘﺮﻝ ﮐﺮﺩﻥ ﺑﺮﻧﺎﻣﻪ ﻫﺎی ﺍﺟﺮﺍﯾﯽ ﻫﺴﺘﻨﺪ‪ .‬ﻫﻨﮕﺎﻣﻴﮑﻪ ﺷﻤﺎ ﺑﻪ ﻣﺮﻭﺭﮔﺮ ﺧﻮﺩ ﯾﮏ ﺩﺭﺧﻮﺍﺳﺖ‬
‫ﺑﺮﺍی ﺩﺭﯾﺎﻓﺖ ﯾﮏ ﺻﻔﺤﻪ ‪ MVC‬ﻣﯽ ﮐﻨﻴﺪ‪ ،‬ﮐﻨﺘﺮﻟﺮ ﻣﺴﺌﻮﻝ ﺑﺮﮔﺮﺩﺍﻧﺪﻥ ﭘﺎﺳﺦ ﺑﻪ ﺩﺭﺧﻮﺍﺳﺖ ﺷﻤﺎ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬

‫ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﻣﻌﻤﻮﻻً ﯾﮏ ﻋﻤﻞ ﯾﺎ ﺑﻴﺸﺘﺮ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﯽ ﺩﻫﻨﺪ‪ .‬ﻋﻤﻞ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﻣﯽ ﺗﻮﺍﻧﺪ ﺍﻧﻮﺍﻉ ﻣﺨﺘﻠﻔﯽ ﺭﺍ ﺍﺯ ﺍﻧﻮﺍﻉ ﻣﺘﻔﺎﻭﺗﯽ ﻧﺘﺎﯾﺞ ﺑﻪ‬
‫ﻣﺮﻭﺭﮔﺮ ﺑﺮﮔﺮﺩﺍﻧﺪ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﻣﯽ ﺗﻮﺍﻧﺪ ﯾﮏ ﻧﻤﺎﯾﺸﮕﺮ ﯾﺎ ﻫﻤﺎﻥ ‪ view‬ﺭﺍ ﺑﻪ ﻣﺮﻭﺭﮔﺮ ﺑﺮﮔﺮﺩﺍﻧﺪ ﻭ ﯾﺎ ﻓﺎﯾﻠﯽ ﺭﺍ ﺑﺮﮔﺮﺩﺍﻧﺪ‬
‫ﻭ ﯾﺎ ﺣﺘﯽ ﻣﯽ ﺗﻮﺍﻧﺪ ﺷﻤﺎ ﺭﺍ ﺑﻪ ﮐﻨﺘﺮﻟﺮ ﺩﯾﮕﺮی ﺍﺭﺟﺎﻉ ﺩﻫﺪ‪.‬‬

‫ﺩﺭ ﺍﯾﻦ ﻓﺼﻞ ﺑﻪ ﺷﻤﺎ ﯾﺎﺩ ﻣﻴﺪﻫﻢ ﭼﻄﻮﺭ ﺍﺯ ﮐﻨﺘﺮﻟﺮﻫﺎ ﻭ ﻧﺤﻮﻩ ﻋﻤﻞ ﮐﺮﺩﻥ ﺁﻧﻬﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ‪ .‬ﺷﻤﺎ ﯾﺎﺩ ﻣﻴﮕﻴﺮﯾﺪ ﭼﻄﻮﺭ ﺍﺯ ﻧﺘﺎﯾﺞ‬
‫ﻋﻤﻠﻴﺎﺗﯽ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ‪ ،‬ﻣﺪﻝ ﻫﺎی ﻣﺨﺘﻠﻒ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﺑﺮﮔﺮﺩﺍﻧﻴﺪ‪ .‬ﻭ ﯾﺎ ﺣﺘﯽ ﭼﮕﻮﻧﻪ ﺍﺯ ﺧﻮﺍﺹ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ‪.‬‬

‫‪ ‬ﺍﻳﺠﺎﺩ ﻛﻨﺘﺮﻟﺮ ) ‪( Controllers‬‬

‫ﺭﺍﺣﺖ ﺗﺮﯾﻦ ﺭﺍﻩ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺍﯾﻦ ﺍﺳﺖ ﮐﻪ ﺑﺮ ﺭﻭی ﻓﻮﻟﺪﺭ ‪ controller‬ﺳﻤﺖ ﺭﺍﺳﺖ ﮐﻠﻴﮏ ﮐﺮﺩﻩ ﻭ ﺍﺯ ﻣﻨﻮی ﻇﺎﻫﺮ ﺷﺪﻩ‬
‫ﮔﺰﯾﻨﻪ ‪ Add>Controller‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ ﻭ ﺳﭙﺲ ﻧﺎﻣﯽ ﺭﺍ ﺑﺮﺍی ﮐﻨﺘﺮﻟﺮ ﺧﻮﺩ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﯾﻴﺪ‪ .‬ﺑﻨﺪﻩ ﺩﺭ ﺍﯾﻨﺠﺎ ﻧﺎﻡ‬
‫‪ ProductController‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﮐﺮﺩﻩ ﺍﻡ‪ .‬ﻣﻄﺎﺑﻖ ﺷﮑﻞ‬

‫ﺑﻌﺪ ﺍﺯ ﺍﯾﻨﮑﻪ ﺑﺮ ﺭﻭی ﺩﮐﻤﻪ‪ Add‬ﮐﻠﻴﮏ ﮐﻨﻴﺪ ﺻﻔﺤﻪ ﺍی ﻣﺸﺎﻫﺪﻩ ﻣﯽ ﮐﻨﻴﺪ ﮐﻪ ﺣﺎﻭی ﮐﺪﻫﺎی ﺯﯾﺮ ﺍﺳﺖ‪:‬‬

‫‪using‬‬ ‫;‪System‬‬
‫‪using‬‬ ‫;‪System.Collections.Generic‬‬
‫‪using‬‬ ‫;‪System.Linq‬‬
‫‪using‬‬ ‫;‪System.Web‬‬
‫‪using‬‬ ‫;‪System.Web.Mvc‬‬

‫‪namespace ToyStore.Controllers‬‬
‫{‬
‫‪public class ProductController : Controller‬‬
‫{‬
‫‪//‬‬
‫‪// GET: /Product/‬‬

‫)(‪public ActionResult Index‬‬


‫{‬
‫;)(‪return View‬‬
‫}‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪36‬‬

‫}‬
‫}‬

‫ﺗﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﺗﻨﻬﺎ ﮐﻼﺳﯽ ﺍﺳﺖ ﮐﻪ ﺍﺯ ﮐﻼﺱ ﭘﺎﯾﻪ ی ‪ System.Web.Mvc.Controller‬ﻭﺭﺍﺛﺖ ﺩﺍﺭﺩ ) ﯾﺎ ﺑﻪ ﺍﺭﺙ ﺑﺮﺩﻩ‬
‫ﺍﺳﺖ (‪.‬‬

‫ﺗﻤﺎﻣﯽ ﻣﺘﺪﻫﺎی ﻋﻤﻮﻣﯽ ﻇﺎﻫﺮ ﺷﺪﻩ ﺗﻮﺳﻂ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﺗﻮﺳﻂ ﺍﻋﻤﺎﻝ ﮐﻨﺘﺮﻟﺮ ﻧﻤﺎﯾﺎﻥ ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﺩﺭ ﮐﺪ ﻫﺎی ﺑﺎﻻ ﮐﻼﺱ ﻫﺎی‬
‫ﮐﻨﺘﺮﻟﯽ ﺩﺭ ﻣﺘﺪ )(‪ index‬ﻧﻤﺎﯾﺎﻥ ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﻣﺘﺪ ﻋﻤﻠﻴﺎﺗﯽ )(‪ index‬ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺸﻔﺮﺽ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﺪ ﻭﻗﺘﻴﮑﻪ‬
‫ﻫﻴﭽﮕﻮﻧﻪ ﺩﺳﺘﻮﺭ ﺻﺮﯾﺤﯽ ﺑﺮﺍی ﺍﺟﺮﺍ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫ﺑﻪ ﻃﻮﺭ ﮐﻠﯽ ﮐﻨﺘﺮﻟﺮ ﻫﺎی ﻋﻤﻠﻴﺎﺗﯽ ﻣﻌﻤﻮﻻً ﻧﺘﺎﯾﺞ ﻋﻤﻠﻴﺎﺗﯽ ﺭﺍ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﻨﺪ‪ .‬ﺍﯾﻦ ﻧﺘﺎﯾﺞ ﻋﻤﻠﻴﺎﺗﯽ ﺗﻮﺳﻂ ﺩﺭﺧﻮﺍﺳﺘﯽ ﮐﻪ ﺗﻮﺳﻂ‬
‫ﻣﺮﻭﺭﮔﺮ ﻣﯽ ﺑﺎﺷﺪ ﺑﺎﺯ ﮔﺮﺩﺍﻧﺪﻩ ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﮐﺎﻣﻞ ﻣﯽ ﺗﻮﺍﻧﺪ ﻋﻤﻠﻴﺎﺕ ﻫﺎی ﻣﺘﻌﺪﺩی ﺭﺍ ﺩﺭ ﺧﻮﺩ ﺟﺎی ﺩﻫﺪ ﻭ ﺍﻧﺠﺎﻡ ﺩﻫﺪ‪.‬‬

‫ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻫﻤﻴﻦ ﺻﻔﺤﻪ ﺍی ﺭﺍ ﮐﻪ ﺍﯾﺠﺎﺩ ﮐﺮﺩﻩ ﺍﯾﻢ ﮐﻤﯽ ﺗﻐﻴﻴﺮ ﻣﯽ ﺩﻫﻴﻢ ﻭ ﺳﻪ ﻧﻮﻉ ﻋﻤﻠﻴﺎﺕ ﺭﺍ ﺩﺭ ﺁﻥ ﻣﯽ ﻧﻮﯾﺴﻴﻢ‪.‬‬

‫;‪using System.Web.Mvc‬‬

‫‪namespace ToyStore.Controllers‬‬
‫{‬
‫‪public class ProductController : Controller‬‬
‫{‬
‫‪//‬‬
‫‪// GET: /Product/‬‬

‫)(‪public ActionResult Index‬‬


‫{‬
‫;)(‪return View‬‬
‫}‬

‫‪//‬‬
‫‪// GET : /Product/HELP‬‬
‫)(‪public ActionResult Help‬‬
‫{‬
‫;)(‪return View‬‬
‫}‬

‫‪//‬‬
‫‪// GET: /Details/1‬‬
‫)‪public ActionResult Details(int Id‬‬
‫{‬
‫;)(‪return View‬‬
‫}‬
‫}‬
‫}‬

‫ﺣﺎﻝ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﻋﻤﺎﻝ ﻣﺨﺘﻠﻔﯽ ﺭﺍ ﺩﺭ ﺁﺩﺭﺱ ﺑﺎﺭ ﻣﺮﻭﺭﮔﺮ ﺧﻮﺩ ﺗﺎﯾﭗ ﻧﻤﺎﯾﻴﺪ‪ ،‬ﻣﺎﻧﻨﺪ‪:‬‬

‫‪ : /Product/Index‬ﺑﺮﺍی ﻓﺮﺍﺧﻮﺍﻧﯽ ‪ ProductController‬ﺍﺯ ﺗﺎﺑﻊ )(‪Index‬‬

‫‪ : /Product‬ﺑﺮﺍی ﻓﺮﺍﺧﻮﺍﻧﯽ ‪ ProductController‬ﺍﺯ ﺗﺎﺑﻊ )(‪ - Index‬ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﺭﺍ ﺑﮕﻮﯾﻢ ﻫﻴﭻ ﻓﺮﻗﯽ ﺑﻴﻦ ﺍﯾﻦ ﻓﺮﻣﺎﻥ ﻭ ﻓﺮﻣﺎﻥ‬
‫ﺑﺎﻻﯾﯽ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ‪.‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪37‬‬

‫‪ : Product/Help‬ﺑﺮﺍی ﻓﺮﺍﺧﻮﺍﻧﯽ ﺗﺎﺑﻊ ) ﺍﻟﺒﺘﻪ ﻣﻨﻈﻮﺭﻣﺎﻥ ﺻﻔﺤﻪ ‪ View‬ﺍﺳﺖ ( )(‪ Help‬ﺍﺳﺖ‬

‫‪ : /Product/Details/4‬ﺑﺮﺍی ﻓﺮﺍﺧﻮﺍﻧﯽ ﺻﻔﺤﻪ ‪ View‬ﻣﺸﺨﺼﺎﺕ ﯾﮏ ﻣﺤﺼﻮﻝ ﮐﻪ ﺩﺭ ﺍﯾﻨﺠﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻣﺤﺼﻮﻟﯽ ﮐﻪ ﺷﻤﺎﺭﻩ‬
‫‪ ۴‬ﺭﺍ ﺩﺍﺭﺩ ﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ‪.‬‬

‫ﭼﻨﺪ ﺗﺎ ﻧﮑﺘﻪ ﺭﻭ ﻫﻢ ﺍﯾﻨﺠﺎ ﻻﺯﻡ ﻣﯽ ﺩﻭﻧﻢ ﺑﮕﻢ‪.‬‬

‫ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﻣﺸﺎﻫﺪﻩ ﮐﺮﺩﯾﺪ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﺑﺮ ﺍﺳﺎﺱ ﻣﺪﻝ ﺯﯾﺮ ﺑﻪ ﻧﻈﺮ ﻣﯽ ﺁﯾﻨﺪ‪:‬‬

‫} ‪{ controller } / { action } / { id‬‬

‫ﺍﯾﻦ ﺍﻟﮕﻮی ﻓﺮﺍﺧﻮﺍﻧﯽ ﺑﻪ ﺻﻮﺭﺕ ﭘﻴﺶ ﻓﺮﺽ ﺩﺭ ﻓﺎﯾﻞ ‪ Global.aspx‬ﺗﻌﺮﯾﻒ ﻣﯽ ﺷﻮﺩ‪ .‬ﺷﻤﺎ ﺑﺎ ﭘﻴﺪﺍ ﮐﺮﺩﻥ ﺍﯾﻦ ﺍﻟﮕﻮ ﻣﯽ ﺗﻮﺍﻧﻴﺪ‬
‫ﻣﻄﺎﺑﻖ ﺑﺎ ﺳﻠﻴﻘﻪ ﺧﻮﺩ ﺁﻥ ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﻫﻴﺪ‪ ) .‬ﺧﻮﺩﻡ ﻫﻨﻮﺯ ﺑﻠﺪ ﻧﻴﺴﺘﻢ ﺑﺎ ﺍﯾﻦ ﻣﻮﺭﺩ ﮐﺎﺭ ﮐﻨﻢ‪ .‬ﺩﺭ ﻓﺼﻞ ﻫﺎی ﺁﯾﻨﺪﻩ ﺣﺘﻤًﺎ ﮐﺎﺭ ﺑﺎ ﺍﯾﻦ‬
‫ﺻﻔﺤﻪ ﻭ ﻣﻮﺍﺭﺩ ﺁﻥ ﺭﺍ ﯾﺎﺩ ﺧﻮﺍﻫﻢ ﮔﺮﻓﺖ ﻭ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺷﻤﺎ ﺩﻭﺳﺘﺎﻥ ﻗﺮﺍﺭ ﻣﯽ ﺩﻫﻢ (‬

‫ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﺭﺍ ﻫﻢ ﺍﺿﺎﻓﻪ ﻣﯽ ﮐﻨﻢ ﻭﻗﺘﯽ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﻴﻢ ‪ ،‬ﻣﺮﻭﺭﮔﺮ ﺁﻥ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﺑﺪﻭﻥ ﭘﻴﺸﻮﻧﺪ ﺑﻪ ﻧﻤﺎﯾﺶ ﺩﺭ ﻣﯽ‬
‫ﺁﻭﺭﺩ‪ .‬ﯾﻌﻨﯽ ﭘﺴﻮﻧﺪ ‪ .aspx‬ﺭﺍ ﻧﺸﺎﻥ ﻧﻤﯽ ﺩﻫﺪ‪.‬‬

‫ﭘﻴﺸﻔﺮﺽ ﺗﻤﺎﻣﯽ ﻓﺮﺍﻣﻴﻦ )(‪ index‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﯾﻌﻨﯽ ﺷﻤﺎ ﻭﻗﺘﯽ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﻴﺪ ﺩﺭ ﺍﺑﺘﺪﺍ ﺗﺎﺑﻊ )(‪ Index‬ﺭﺍ‬
‫ﻧﻤﺎﯾﺶ ﻣﯽ ﺩﻫﺪ‪.‬‬

‫‪ ‬ﻧﺘﺎﻳﺞ ﺑﺎﺯﮔﺸﺖ ﺭﺧﺪﺍﺩ ) ﻓﺮﻣﺎﻥ (‬

‫ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﻣﻌﻤﻮﻻ ﺭﺧﺪﺍﺩ ‪ ActionResult‬ﺭﺍ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﺪ‪ .‬ﻓﺮﯾﻤﻮﺭک ‪ ASP Net MVC‬ﺷﺎﻣﻞ ﺍﻧﻮﺍﻉ ﻣﺨﺘﻠﻔﯽ ﺍﺯ ﺍﯾﻦ ﻧﺘﺎﯾﺞ ﺭﺧﺪﺍﺩ ﯾﺎ‬
‫ﻫﻤﺎﻥ ‪ ActionResult‬ﻣﯽ ﺑﺎﺷﺪ‪:‬‬

‫‪ : ViewResut‬ﺑﺮﺍی ﻧﻤﺎﯾﺶ ‪ View‬ﺧﺎﺹ ﻭ ﻣﻮﺭﺩ ﻧﻈﺮ ﺩﺭ ‪Asp Net MVC‬‬ ‫•‬


‫‪ : PartialViewResult‬ﺑﺮﺍی ﻧﻤﺎﯾﺶ ﻗﺴﻤﺘﯽ ﺍﺯ ﯾﮏ ‪ view‬ﻣﻮﺭﺩ ﻧﻈﺮ ﻭ ﺧﺎﺹ‬ ‫•‬
‫‪ : RedirectResult‬ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﺍﻧﺘﻘﺎﻝ ﺑﻪ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺩﯾﮕﺮ‬ ‫•‬
‫‪ : ContentResult‬ﻧﻤﺎﯾﺶ ﺭﺩﯾﻔﯽ ﺍﺯ ﻣﺤﺘﻮﺍ ﺑﺮﺍی ﺍﺭﺳﺎﻝ ﺑﻪ ﻣﺮﻭﺭﮔﺮ‬ ‫•‬
‫‪ : JsonResult‬ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﺁﺑﺠﮑﺖ ﻫﺎی ﺟﺎﻭﺍ ﺍﺳﮑﺮﯾﭙﺖ‬ ‫•‬
‫‪ : FileResult‬ﻧﺸﺎﻥ ﺩﺍﻥ ﻓﺎﯾﻞ ﺑﺮﺍی ﺩﺍﻧﻠﻮﺩ‬ ‫•‬
‫‪ : EmptyResult‬ﻧﻤﺎﯾﺶ ﻧﺘﺎﯾﺠﯽ ﺩﺭ ﺑﺮ ﻧﺪﺍﺭﻧﺪ‬ ‫•‬
‫‪ :HttpUnautorzedResult‬ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ‪ HTTP‬ﻏﻴﺮ ﻣﺠﺎﺯ‬ ‫•‬
‫‪ : JavaScriptResult‬ﻧﺸﺎﻥ ﺩﺍﻧﺪ ﻓﺎﯾﻞ ﻫﺎی ﺟﺎﻭﺍ ﺍﺳﮑﺮﯾﭙﺖ‬ ‫•‬
‫‪ :RedirectToRoutResult‬ﻧﺸﺎﻧﺪﻫﻨﺪﻩ ﺍﻧﺘﻘﺎﻝ ﺑﻪ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﯾﺎ ﯾﮏ ‪ URL‬ﺑﺮ ﺍﺳﺎﺱ ﺍﺭﺯﺵ ﻭ ﻣﻘﺪﺍﺭ‬ ‫•‬

‫ﺩﺭ ﻧﻬﺎﯾﺖ ﺷﻤﺎ ﻧﻤﯽ ﺗﻮﺍﻧﻴﺪ ﺑﻪ ﺻﻮﺭﺕ ﻣﺴﺘﻘﻴﻢ ﺍﯾﻦ ‪ ActionResult‬ﻫﺎ ﺭﺍ ﺍﺯ ﮐﻨﺘﺮﻟﺮ ﺑﺎﺯﮔﺮﺩﺍﻧﻴﺪ ) ﯾﺎ ﻧﻤﺎﯾﺶ ﺩﻫﻴﺪ ( ﺩﺭ ﻋﻮﺽ ﺷﻤﺎ‬
‫ﻣﯽ ﺑﺎﯾﺴﺖ ﻣﺘﺪﻫﺎی ﺍﯾﻦ ﮐﻨﺘﺮﻟﺮ ﻫﺎ ﺭﺍ ﺍﺯ ‪ ActionResult‬ﺑﺮﮔﺮﺩﺍﻧﻴﺪ‪ .‬ﺩﺭ ﺯﯾﺮ ﻟﻴﺴﺘﯽ ﺍﺯ ﺍﯾﻦ ﻣﺘﺪﻫﺎ ﺭﺍ ﺑﺮﺍی ﺷﻤﺎ ﺑﺎﺯﮔﻮ ﻣﯽ ﮐﻨﻢ‪.‬‬

‫)(‪ :View‬ﺑﺮﺍی ﺑﺎﺯ ﮔﺮﺩﺍﻧﺪﻥ ‪ViewResult‬‬ ‫•‬


‫)(‪ :PartialView‬ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ ‪PartialViewResult‬‬ ‫•‬
‫)(‪ :RedirectToAction‬ﺑﺮﺍی ﺑﺎﺯ ﮔﺮﺩﺍﻧﺪﻥ ‪RedirectToResult‬‬ ‫•‬
‫)(‪ :Redirect‬ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ ‪RedirectResult‬‬ ‫•‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 38

ContentResult ‫ ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ‬:Content() •


JsonResult ‫ ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ‬:JSon() •
FileResult ‫ ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ‬:File() •
JavaScriptResult ‫ ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ‬: JavaScript() •
redirectToRoutResult ‫ ﺑﺮﺍی ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ‬: RedirectToRout() •

‫ ﺑﺎﺯﮔﺸﺖ ﻧﻤﺎﻳﺶ ﻧﺘﺎﻳﺞ‬

.‫ ﻣﯽ ﺑﺎﺷﺪ‬MVC ‫ﻫﺎ ﺩﺭ‬View ‫ﺟﻬﺖ ﻧﻤﺎﺵ‬ViewResult .‫ ﮐﻪ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺩﺍﺭﺩ‬ActionResult ‫ ﺭﺍﯾﺞ ﺗﺮﯾﻦ ﻧﻮﻉ‬ViewResult
.‫ ﺁﻥ ﺻﻔﺤﻪ ﺭﺍ ﺑﺮﮔﺮﺩﺍﻧﺪﻩ ﺍﯾﺪ‬ViewResult ‫ ﺭﺍ ﺩﺭ ﻣﺮﻭﺭﮔﺮ ﺧﻮﺩ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﻴﺪ ﺩﺭ ﺣﻘﻴﻘﺖ‬HTML ‫ﻫﻨﮕﺎﻣﻴﮑﻪ ﺷﻤﺎ ﯾﮏ ﺻﻔﺤﻪ‬

.‫ ﺍﺟﺮﺍ ﻣﯽ ﺷﻮﺩ ﮐﻪ ﺩﺭ ﺯﯾﺮ ﺑﻪ ﺁﻥ ﻣﯽ ﭘﺮﺩﺍﺯﯾﻢ‬Customer ‫ ﺗﻮﺳﻂ ﮐﻨﺘﺮﻟﺮ‬Details()

‫ ﻣﯽ‬CustomerController ‫ ﺍﺿﺎﻓﻪ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﻧﺎﻡ ﺁﻥ ﺭﺍ‬Controllers ‫ﻣﻄﺎﺑﻖ ﺁﻧﭽﻪ ﺩﺭ ﻗﺒﻞ ﮔﻔﺘﻴﻢ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺟﺪﯾﺪ ﺑﻪ ﻓﻮﻟﺪﺭ‬
.‫ﻧﺎﻣﻴﻢ‬

‫ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺯﯾﺮ‬

:‫ﻭ ﺑﺎﯾﺪ ﻣﻄﺎﺑﻖ ﺯﯾﺮ ﺗﻐﻴﻴﺮ ﺩﻫﻴﻢ‬

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Faedu.Controllers
{
public class CustomerController : Controller
{
//
// GET: /Customer/

public ActionResult Details()


{
return View();
}
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪39‬‬

‫}‬
‫}‬

‫ﺩﺭ ﺍﯾﻨﺠﺎ ﻣﺘﺪ )(‪ Details‬ﺍﺯ ﻃﺮﯾﻖ ﻣﺘﺪ )(‪ View‬ﻧﺘﺎﯾﺞ ﺑﺎﺯﮔﺸﺘﯽ ‪ ViewResult‬ﺭﺍ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﺪ‪.‬‬

‫ﺩﺭ ﺍﯾﻨﺠﺎ ﺑﺮﺍی ﺍﯾﻨﮑﻪ ﺑﺘﻮﺍﻧﻴﺪ ﺻﻔﺤﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﻧﻤﺎﯾﺶ ﺩﻫﻴﺪ ) ﻭﻗﺘﯽ ﮐﻪ ﻣﺘﺪ )(‪ view‬ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﯽ ﮐﺮﺩﯾﺪ( ﺩﻭ ﺭﺍﻩ ﺩﺍﺭﯾﺪ‬

‫‪ - ١‬ﺭﺍﻩ ﺍﻭﻝ ﺑﻪ ﺻﻮﺭﺕ ﻏﻴﺮ ﻣﺴﺘﻘﻴﻢ ) ﯾﺎ ‪( implicitly‬‬


‫‪ - ٢‬ﺭﺍﻩ ﺩﻭﻡ ﺑﻪ ﺻﻮﺭﺕ ﻣﺴﺘﻘﻴﻢ ) ﯾﺎ ‪( explicitly‬‬

‫ﺩﺭ ﮐﺪﻫﺎی ﺑﺎﻻ ﻣﺎ ﺑﻪ ﻃﻮﺭ ﻣﺴﺘﻘﻴﻢ ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﺍﺩﯾﻢ‪ .‬ﺩﺭ ‪ ASP.NET MVC framework‬ﺗﻌﻴﻴﻦ ﮐﻨﻨﺪﻩ ﺍﯾﻦ ﺟﺮﯾﺎﻥ ﻧﺎﻡ‬
‫ﻧﻤﺎﯾﺸﻦ ﺩﻫﻨﺪﻩ ﺍی ﮐﻪ ﺍﺯ ﻧﺎﻡ ﻣﺘﺪ ﮔﺮﻓﺘﻪ ﺷﺪﻩ ﺍﺳﺖ ‪ ،‬ﻣﯽ ﺑﺎﺷﺪ) ﻣﻴﺪﻭﻧﻢ ﺧﻴﻠﯽ ﭘﻴﭽﻴﺪﻩ ﺷﺪ‪ .‬ﺯﺑﻮﻥ ﺧﻮﺩﻣﻮﻧﯽ‪ :‬ﻫﺮﭼﯽ ﺍﮐﺸﻦ‬
‫ﻣﺘﺪ ﺑﮕﻪ ﻫﻤﻮﻥ ﺭﻭ ﻧﺎﻣﮕﺬﺍﺭی ﻣﯽ ﮐﻨﻪ ( ﺩﺭ ﺍﯾﻦ ﺭﻭﺵ ﻧﻤﺎﯾﺶ ﺩﻫﻨﺪﻩ ﺑﺮ ﺍﺳﺎﺱ ﻣﮑﺎﻥ ﻓﺎﯾﻞ ﻣﯽ ﺑﺎﺷﺪ‪:‬‬

‫‪Views\Customer\Details.aspx‬‬

‫ﻫﻤﺎﻧﻄﻮﺭ ﮐﻪ ﺍﺯ ﺁﺩﺭﺱ ﺑﺎﻻ ﻣﻌﻠﻮﻡ ﺍﺳﺖ ‪ ASP.NET MVC framework‬ﺑﺮ ﺍﺳﺎﺱ ﺍﻟﮕﻮی ﺯﯾﺮ ﻧﺎﻣﮕﺬﺍﺭی ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﯽ ﺩﻫﺪ‪:‬‬

‫‪Views\ {controller} \ {action}.aspx‬‬

‫ﺍﮔﺮ ﺷﻤﺎ ﺍﯾﻦ ﺭﺍﻩ ﺭﺍ ﺗﺮﺟﻴﺢ ﻣﯽ ﺩﻫﻴﺪ ﮐﻪ ﻫﻴﭻ ﻭﻟﯽ ﺍﮔﺮ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﺭﻭﺵ ﺩﻭﻡ ﺭﺍ ﻧﻴﺰ ﺗﺴﺖ ﮐﻨﻴﺪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺩﺍﻣﻪ ﻣﻄﻠﺐ ﺭﺍ‬
‫ﺑﺨﻮﺍﻧﻴﺪ!!!! ‪:‬ﺩی‬

‫ﺑﻪ ﺍﯾﻦ ﮐﺪﻩ ﻫﺎ ﺩﻗﺖ ﮐﻨﻴﺪ ﺗﺎ ﺭﻭﺵ ﺩﻭﻡ ﺭﺍ ﻧﻴﺰ ﺑﮕﻢ‬

‫‪. . . .‬‬
‫‪. . . . .‬‬
‫‪. . . . . .‬‬
‫‪public class CustomerController : Controller‬‬
‫{‬
‫‪//‬‬
‫‪// GET: /Customer/‬‬

‫)(‪public ActionResult Details‬‬


‫{‬
‫;)"‪return View("Details‬‬
‫}‬

‫}‬
‫}‬
‫ﺧﻴﻠﯽ ﻭﺍﺿﺢ ﻫﺴﺘﺶ ‪ .‬ﻓﻘﻂ ﺍﯾﻨﻮ ﺍﺿﺎﻓﻪ ﮐﻨﻢ ﺍﯾﻦ ﺭﻭﺵ ﺑﺮﺍی ﻣﻮﻗﻌﯽ ﺧﻮﺑﻪ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﯾﺪ ﺁﺩﺭﺱ ﮐﺎﻣﻞ ﺭﻭ ﻫﻤﺮﺍﻩ ﺑﺎ‬
‫ﻣﻮﻗﻌﻴﺖ ﻓﻮﻟﺪﺭ ﻫﺎ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ‪ .‬ﺑﻬﺘﻮﻥ ﭘﻴﺸﻨﻬﺎﺩ ﻣﯽ ﮐﻨﻢ ﺩﻭ ﺗﺎ ﺭﻭﺵ ﺭﻭ ) ﮐﻪ ﺟﻔﺘﺸﻮﻥ ﻫﻢ ﯾﮏ ﺟﻮﺍﺏ ﺭﻭ ﺑﻬﺘﻮﻥ ﻣﻴﺪﻩ ﻭ‬
‫ﺧﻴﻠﯽ ﻫﻢ ﺳﺎﺩﻩ ﻫﺴﺖ( ﺍﻣﺘﺤﺎﻥ ﮐﻨﻴﺪ‪.‬‬

‫ﺩﺭ ﺍﯾﻦ ﺣﺎﻟﺖ ﻧﻤﺎﯾﺸﮕﺮ ) ﯾﺎ ﻫﻤﻮﻥ ‪ (View‬ﺷﺎﻣﻞ ﻣﺴﻴﺮ ﻭﺍﻗﻌﯽ ﻫﺴﺘﺶ‪ .‬ﺍﮔﺮ ﺷﻤﺎ ﻣﺴﻴﺮ ﻭﺍﻗﻌﯽ ﺭﻭ ﻣﺸﺨﺺ ﺑﮑﻨﻴﺪ‪ ،‬ﺁﻧﮕﺎﻩ‬
‫ﻧﻤﺎﯾﺸﮕﺮ ﺍﯾﻦ ﻣﺴﻴﺮ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﮐﻨﺪ ﻭ ﺑﻪ ﺻﻮﺭﺕ ﻧﺮﻣﺎﻝ ﺩﺭ ‪ MVC‬ﺩﺭ ﻣﯽ ﺁﻭﺭﺩ ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻧﻤﺎﯾﺸﮕﺮ ﻣﺴﻴﺮ‬
‫‪ Subfolder\Details‬ﺭﺍ ﺍﺯ ﻣﺘﺪ )(‪ Details‬ﺑﻪ ﺻﻮﺭﺕ ﺯﯾﺮ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻣﯽ ﮐﻨﺪ‪:‬‬

‫‪\Views\Details\Subfolder\Details.aspx‬‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪40‬‬

‫ﺍﻟﺒﺘﻪ ﺩﺭ ﺁﺧﺮ ﺍﯾﻦ ﻣﺒﺤﺚ ﺑﺎﯾﺪ ﺍﯾﻨﻮ ﺍﺿﺎﻓﻪ ﮐﻨﻢ ﮐﻪ ﻣﺘﺪ )(‪ View‬ﺷﺎﻣﻞ ﭘﺎﺭﺍﻣﺘﺮﻫﺎی ﺯﯾﺮ ﻧﻴﺰ ﻣﯽ ﺑﺎﺷﺪ‬

‫‪ : viewName‬ﻧﺎﻣﯽ ﺑﺮﺍی ﻧﻤﺎﯾﺸﮕﺮ ) ﯾﺎ ﻣﺴﻴﺮ ﻧﻤﺎﯾﺸﮕﺮ (‬ ‫•‬


‫‪ : masterName‬ﻧﺎﻣﯽ ﺑﺮﺍی ‪ – Master Page‬ﺩﺭ ﺍﯾﻦ ﻣﻮﺭﺩ ﺩﺭ ﻣﺒﺎﺣﺚ ﻫﺎی ﺁﯾﻨﺪﻩ ﻣﻔﺼﻞ ﺗﻮﺿﻴﺢ ﻣﯽ ﺩﻫﻢ‬ ‫•‬
‫‪ : model‬ﻧﺎﻡ ﻣﺪﻝ ﮐﻼﺱ ﻣﺮﺗﺒﻂ ﺑﺎ ﻧﻤﺎﯾﺶ‬ ‫•‬

‫)‪(returning a redirection result‬‬ ‫‪ ‬ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﺗﻐﻴﻴﺮ ﻣﺴﻴﺮ ﻧﺘﺎﻳﺞ‬

‫ﻣﻌﻤﻮﻻً ﺩﺭ ﻃﻮﻝ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺍﯾﻦ ﻧﻴﺎﺯ ﭘﻴﺪﺍ ﻣﯽ ﮐﻨﻴﻢ ﮐﻪ ﺑﻴﻦ ﺩﻭ ﮐﻨﺘﺮﻟﺮ ﺍﻧﺘﻘﺎﻝ ﭘﻴﺪﺍ ﮐﻨﻴﻢ‪ .‬ﺩﺭ ﺍﯾﻦ ﻟﺤﻈﻪ!!! ﺍﺳﺖ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ‬
‫ﺍﺯ ﻣﺘﺪ )(‪ RedirectToAction‬ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ ‪.‬‬

‫ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺩﺭ ﻧﻤﻮﻧﻪ ﮐﺪﻫﺎی ﺯﯾﺮ ﮐﻨﺘﺮﻟﺮ ‪ Widget‬ﺷﺎﻣﻞ ﻋﻤﻞ ) ﯾﺎ ﻫﻤﻮﻥ ‪ Detail() (action‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﺍﮔﺮ ﻋﻤﻞ )(‪Details‬‬
‫ﺑﻪ ﭘﺎﺭﺍﻣﺘﺮ ‪ id‬ﺍﺳﺘﻨﺎﺩ ﻧﮑﻨﺪ ) ﯾﺎ ﺑﺪﻭﻥ ﺍﯾﻨﮑﻪ ﺑﻪ ﭘﺎﺭﺍﻣﺘﺮ ‪ id‬ﺍﺳﺘﻨﺎﺩ ﮐﻨﺪ( ﮐﺎﺭﺑﺮ ﺭﺍ ﺑﻪ ﺻﻔﺤﻪ ﺧﺎﺹ ﮐﻪ ﻣﺎ ﺩﺭ ﺍﯾﻨﺠﺎ )(‪ index‬ﺭﺍ ﺩﺭ ﻧﻈﺮ‬
‫ﮔﺮﻓﺘﻴﻢ‪ ،‬ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﺪ‪:‬‬

‫ﻓﻘﻂ ﻗﺒﻠﺶ ﯾﻪ ﺗﻮﺿﻴﺢ ﮐﻮﭼﻴﮏ ﺑﺪﻡ‪ :‬ﻣﺜﻞ ﮔﺬﺷﺘﻪ ﺍﺑﺘﺪﺍ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺩﺭ ﻓﻮﻟﺪﺭ ‪ Controllers‬ﺑﺎ ﻧﺎﻡ ‪ WidgetController‬ﺍﯾﺠﺎﺩ ﮐﺮﺩﯾﻢ‬
‫ﻭ ﮐﺪﻫﺎ ﺭﻭ ﻣﻄﺎﺑﻖ ﺯﯾﺮ ﺗﻐﻴﻴﺮ ﺩﺍﺩﯾﻢ‪:‬‬

‫‪using‬‬ ‫;‪System‬‬
‫‪using‬‬ ‫;‪System.Collections.Generic‬‬
‫‪using‬‬ ‫;‪System.Linq‬‬
‫‪using‬‬ ‫;‪System.Web‬‬
‫‪using‬‬ ‫;‪System.Web.Mvc‬‬

‫‪namespace Faedu.Controllers‬‬
‫{‬
‫‪public class WidgetController : Controller‬‬
‫{‬
‫‪//‬‬
‫‪// GET: /Widget/‬‬

‫)(‪public ActionResult Index‬‬


‫{‬
‫;)(‪return View‬‬
‫}‬

‫‪//‬‬
‫‪// GET: /Widget/Create‬‬
‫)‪public ActionResult Details(int? id‬‬
‫{‬
‫)‪if (!id.HasValue‬‬
‫;)"‪return RedirectToAction("Index‬‬

‫;)(‪return View‬‬
‫}‬
‫}‬
‫}‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪41‬‬

‫‪ ‬ﻧﺘﻴﺠﻪ ﻣﺤﺘﻮﺍﻱ ﺑﺎﺯﮔﺸﺘﻲ‬

‫ﺩﺭ ‪ MVC‬ﯾﮏ ﺗﺎﺑﻊ ﺑﺮﮔﺸﺘﯽ ﺩﺍﺭﯾﻢ ﮐﻪ ﻓﻘﻂ ﺭﺷﺘﻪ ﯾﺎ ﻫﻤﻮﻥ ‪ String‬ﺭﺍ ﺑﻬﻤﻮﻥ ﻧﺸﻮﻥ ﻣﻴﺪﻩ ) ﺧﻴﻠﯽ ﺩﯾﮕﻪ ﺧﻮﺩﻣﻮﻧﯽ ﺑﻮﺩ(‬

‫ﺍﺳﻢ ﺍﯾﻦ ﺗﺎﺑﻊ )(‪ say‬ﻫﺴﺖ‪ .‬ﻫﺮ ﺟﺎ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺍﺳﺘﻔﺎﺩﻩ ﺑﮑﻨﻴﺪ ﺍﻭﻥ ﺭﺷﺘﻪ ﺍی ﮐﻪ ﺩﺍﺧﻠﺶ ﻫﺴﺖ ﺭﻭ ﻧﺸﻮﻥ ﻣﻴﺪﻩ‪ .‬ﻓﻘﻂ ﺩﻗﺖ‬
‫ﮐﻨﻴﺪ ﮐﻪ ﺭﺷﺘﻪ ﺭﺍ ﺩﺭ ﯾﮏ ﺩﺍﺑﻞ ﮐﻮﺗﻴﺸﻦ ﻗﺮﺍﺭ ﺑﺪﯾﺪ‪ .‬ﺑﻪ ﻫﻤﻴﻦ ﺭﺍﺣﺘﯽ‪...‬‬

‫ﻣﺜﻞ ﮐﺪ ﺯﯾﺮ‪ .‬ﻓﻘﻂ ﺩﻗﺖ ﮐﻨﻴﺪ ﮐﻪ ﺑﻨﺪﻩ ﺩﯾﮕﻪ ﺍﯾﻦ ﺭﻭ ﺩﺭ ﻭﯾﮋﻭﺍﻝ ﺍﺳﺘﻮﺩﯾﻮ ﺭﺍﻥ ﻧﮑﺮﺩﻡ‪ .‬ﭼﻮﻥ ﭼﻴﺰ ﺧﺎﺻﯽ ﻧﻴﺴﺖ‬

‫)(‪public string say‬‬


‫{‬
‫;"‪return "www.faedu.ir‬‬
‫}‬
‫ﺍﻟﺒﺘﻪ ﯾﮏ ﻧﮑﺘﻪ ﺭﻭ ﻫﻢ ﺑﮕﻢ ‪ ،‬ﺍﯾﻦ ﺗﺎﺑﻊ ﺩﺭ ﻋﻴﻦ ﺳﺎﺩﮔﯽ ﺧﻴﻠﯽ ﺟﺎﻫﺎ ﺑﻪ ﮐﺎﺭ ﻣﻴﺎﺩ‪ .‬ﻣﺜﻼً ﺷﻤﺎ ﻣﻴﺘﻮﻧﻴﺪ ﺗﻮﺳﻂ ﺍﯾﻦ ﺗﺎﺑﻊ ﺳﺎﻋﺖ‪،‬‬
‫ﺗﺎﺭﯾﺦ ﻭ ﯾﺎ ﺣﺘﯽ ﯾﮏ ﺗﺎﺑﻊ ﺩﯾﮕﻪ ﮐﻪ ﻣﻤﮑﻨﻪ ﺍﺯ ﻧﻮﻉ ‪ integer‬ﺑﺎﺷﻪ ﻭ ﯾﺎ ‪ ....‬ﺧﻼﺻﻪ ﺗﺎﺑﻊ ﺳﺎﺩﻩ ﻭ ﺩﺭ ﻋﻴﻦ ﺣﺎﻝ ﮐﺎﺭﺑﺮﺩی ﻫﺴﺖ‪.‬‬

‫‪ ‬ﻧﺘﻴﺠﻪ ﺑﺎﺯﮔﺸﺘﻲ ‪JSON‬‬

‫ﺑﺮﺍی ﺩﻭﺳﺘﺎﻧﯽ ﮐﻪ ﻧﻤﻴﺪﻭﻧﻦ ‪ JSON‬ﭼﻴﻪ ﺑﺎﯾﺪ ﺑﮕﻢ ﮐﻪ ﻣﺨﻔﻒ ‪ JavaScript Object Notation‬ﻫﺴﺖ ﺑﻪ ﻣﻌﻨﺎی ﺷﯽ ﻋﻼﻣﺖ‬
‫ﮔﺬﺍﺭی ﺟﺎﻭﺍ ﺍﺳﮑﺮﯾﭙﺖ‪ .‬ﺑﻨﺪﻩ ﺧﻮﺩﻡ ﺑﻪ ﺷﺨﺼﻪ ﺯﯾﺎﺩ ﺟﺎﻭﺍ ﺑﻠﺪ ﻧﻴﺴﺘﻢ‪.‬‬

‫ﺑﻪ ﻃﻮﺭ ﮐﻞ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺑﺮﺍی ﻣﻮﺍﺭﺩی ﮐﻪ ﻣﻴﺨﻮﺍﻫﻴﺪ ﺑﺮﻧﺎﻣﻪ ی ﺧﻮﺩ ﺭﺍ ﺁﺟﺎﮐﺲ ﮐﻨﻴﺪ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ‪ .‬ﺍﻟﺒﺘﻪ ﻣﻮﺍﺭﺩ‬
‫ﺩﯾﮕﺮی ﻧﻴﺰ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ ﻣﺜﻞ ﺍﻧﺘﻘﺎﻝ ﻭ ﺗﺒﺪﯾﻞ ﺩﯾﺘﺎﺑﻴﺲ ﺑﻪ ‪ JSON‬ﻭ ﺍﻧﺘﻘﺎﻝ ﺍﺯ ﺁﻥ ﺑﻪ ﻣﺮﻭﺭﮔﺮ ﺑﺮﺍی ﻧﻤﺎﯾﺶ‬
‫ﺑﻬﺘﺮ‪ .‬ﺑﺮﺍی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﯾﻦ ﺗﺎﺑﻊ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ )(‪ Json‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ‪.‬‬

‫ﻣﺜﻞ ﺷﮑﻞ ﺯﯾﺮ‪ .‬ﻓﻘﻂ ﯾﮏ ﻧﮑﺘﻪ ﺷﻤﺎ ﺑﻬﺘﺮﻩ ﺑﺮﺍی ﻓﻬﻢ ﺑﻬﺘﺮ ﯾﮏ ﭘﺮﻭژﻩ ﺟﺪﯾﺪ ﺑﺎﺯ ﮐﻨﻴﺪ‪.‬‬

‫)(‪public ActionResult Index‬‬


‫{‬
‫;)(‪return View‬‬
‫}‬

‫)(‪public ActionResult List‬‬


‫{‬
‫>‪var quetes = new List<string‬‬
‫{‬
‫‪"test 1",‬‬
‫‪"test 2‬‬ ‫‪test 2",‬‬

‫;}‬

‫;)‪return Json(quetes‬‬
‫}‬

‫ﮐﺪ ﺑﺎﻻ ﺑﺮﺍی ﻗﺴﻤﺖ ﮐﻨﺘﺮﻟﺮ ﻫﺴﺖ ﯾﻌﻨﯽ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﻴﺪ ﻭ ﻣﻮﺍﺭﺩ ﺑﺎﻻ ﺭﻭ ﺗﺎﯾﭗ ﻣﯽ ﮐﻨﻴﺪ‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 42

‫ ﻫﺴﺖ‬view ‫ﮐﺪ ﺯﯾﺮ ﻫﻢ ﻗﺴﻤﺖ‬

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>

<script type="text/javascript">

$.ajaxSetup({ cache: false });


$(getQuote);

function getQuote() {
$.getJSON("Quotation/List", showQuote);
}

function showQuote(data) {
var index = Math.floor(Math.random() * 3);
$("#quote").text(data[index]);
}

</script>

<p id="quote"></p>

<button onclick="getQuote()">Get Quote</button>

‫ﺑﺎﯾﺪ ﯾﻪ ﭼﻴﺰی ﻣﺜﻞ ﺻﻔﺤﻪ ﺯﯾﺮ ﺭﻭ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ‬

(‫ﺍﻟﺒﺘﻪ ﻭﻗﺘﯽ ﺭﻭی ﺩﮐﻤﻪ ﮐﻠﻴﮏ ﻣﯽ ﮐﻨﻴﺪ ﺑﺎﯾﺪ ﺍﻭﻥ ﺳﻪ ﺧﻂ ﮐﻪ ﺗﺴﺖ ﺑﻮﺩ ﺭﻭ ﻧﺸﻮﻥ ﺑﺪﻩ) ﺑﻪ ﺻﻮﺭﺕ ﺁﺟﺎﮐﺲ‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪43‬‬

‫‪ ‬ﻧﺘﺎﻳﺞ ﺑﺎﺯﮔﺸﺘﻲ ﻓﺎﻳﻞ‬

‫ﻣﻄﻤﺌﻨﺎً ﺍﯾﻦ ﻗﺴﻤﺖ ﺑﻪ ﺩﺭﺩ ﺧﻴﻠﯽ ﻫﺎ ﻣﻴﺨﻮﺭﻩ‪ .‬ﻣﯽ ﺧﻮﺍﻡ ﺑﻬﺘﻮﻥ ﺑﮕﻢ ﭼﻄﻮﺭ ﻣﯽ ﺗﻮﻧﻴﻢ ﯾﮏ ﻓﺎﯾﻞ ﺭﻭ ﺑﺮﺍی ﺩﺍﻧﻠﻮﺩ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺑﺎﺯﺩﯾﺪ‬
‫ﮐﻨﻨﺪﻩ ﻗﺮﺍﺭ ﺑﺪﯾﻢ‪ .‬ﺟﺎﻟﺒﻪ ﮐﻪ ﻣﺎﯾﮑﺮﻭﺳﺎﻓﺖ ﺩﺭ ﻭﺭژﻥ ﺟﺪﯾﺪ ‪ MVC‬ﺑﻪ ﺍﯾﻦ ﻗﻀﻴﻪ ﻓﮑﺮ ﮐﺮﺩﻩ ﻭ ﯾﮏ ﺗﺎﺑﻊ ﺍﺧﺘﺼﺎﺻﯽ ﺑﻪ ﺍﯾﻦ ﻗﻀﻴﻪ‬
‫ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ ‪ .‬ﺟﺎﻟﺒﻪ؟ ﻧﻪ؟!‬

‫ﺧﻮﺏ ﺍﺳﻢ ﺍﯾﻦ ﺗﺎﺑﻊ )(‪ Download‬ﻫﺴﺘﺶ‪ .‬ﻣﺜﻞ ﺑﻘﻴﻪ ﺗﺎﺑﻊ ﻫﺎ ﻫﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﺸﻪ‪.‬‬

‫ﺍﻭﻝ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﻴﻢ ﻣﺜﻼً ﺑﺎ ﻧﺎﻡ ﺩﺍﻧﻠﻮﺩ‪ .‬ﻓﻘﻂ ﻗﺒﻠﺶ ﯾﮏ ﻓﻮﻟﺪﺭ ﺑﺎﺯ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﯾﮏ ﻓﺎﯾﻞ ﺗﺴﺖ ﺭﻭ ﺩﺭ ﺍﻭﻥ ﻗﺮﺍﺭ ﻣﻴﺪﻫﻴﻢ‬

‫ﺍﯾﻦ ﻫﻢ ﺍﺯ ﮐﺪﻫﺎی ﺍﯾﻦ ﺻﻔﺤﻪ‪:‬‬

‫)(‪public ActionResult Index‬‬


‫{‬
‫;)(‪return View‬‬
‫}‬

‫)(‪public ActionResult Download‬‬


‫{‬
‫‪return File("~/Content/TestFileDownload.docx", "application/vnd.openxmlformat-‬‬
‫;)"‪officedocument.wordproccessingml.document", "TestFileDownload.docx‬‬

‫}‬

‫ﯾﮏ ﻭﯾﻮ ﻫﻢ ﺑﺮﺍﺵ ﺩﺭﺳﺖ ﻣﯽ ﮐﻨﻴﻢ‬

‫ﻣﻦ ﯾﺨﻮﺭﺩﻩ ﺳﺨﺖ ﮐﺮﺩﻡ ﮐﺎﺭ ﺭﻭ‪ .‬ﯾﻌﻨﯽ ﺍﻭﻝ ﯾﮏ ﺻﻔﺤﻪ ﺑﺮﺍی ﻓﻮﻟﺪﺭ ﺩﺍﻧﻠﻮﺩ ﺩﺭﺳﺖ ﮐﺮﺩﻡ ﺑﻌﺪ ﯾﮏ ﻭﯾﻮ ﻫﻢ ﺑﺮﺍی ﺧﻮﺩ ﺗﺎﺑﻊ ﺩﺍﻧﻠﻮﺩ‬

‫ﻣﻴﺰﻧﻴﺪ ﻭﺍﺭﺩ ﺻﻔﺤﻪ ﺍﻭﻝ ﻣﻴﺸﻴﺪ ﺑﻌﺪ ﮐﻪ ﺭﻭی ﻟﻴﻨﮏ ﺻﻔﺤﻪ ﺩﻭﻡ ) ﮐﻪ ﺑﻪ ﻃﻮﺭ ﺩﺳﺘﯽ ﺩﺭﺳﺖ ﺷﺪﻩ (‬ ‫ﯾﻌﻨﯽ ﻭﻗﺘﯽ ﺁﺩﺭﺱ ﺭﻭ‬
‫ﮐﻠﻴﮏ ﻣﯽ ﮐﻨﻴﺪ ﻓﺎﯾﻞ ﺩﺍﻧﻠﻮﺩ ﻣﻴﺸﻪ‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 44

:‫ﭘﺲ ﺑﺎﯾﺪ ﮐﺪ ﺻﻔﺤﻪ ی ﺍﯾﻨﺪﮐﺲ ﻣﺜﻞ ﺯﯾﺮ ﺑﺎﺷﻪ‬

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>
<a href="Download/Download">
Nemone File Download
</a>
</h2>

</asp:Content>
:‫ﺧﻮﺏ ﮐﻞ ﻗﻀﻴﻪ ﺑﺎﯾﺪ ﻣﺜﻞ ﻋﮑﺲ ﺯﯾﺮ ﺑﺎﺷﻪ‬

‫ﺍﮔﺮ ﺭﻭی ﻟﻴﻨﮏ ﮐﻠﻴﮏ ﮐﻨﻴﺪ ﻓﺎﯾﻞ ﺩﺍﻧﻠﻮﺩ ﻣﻴﺸﻪ‬


‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪45‬‬

‫ﻫﻤﻴﻦ ﺑﻪ ﻫﻤﻴﻦ ﺭﺍﺣﺘﯽ‪ .‬ﺍﻟﺒﺘﻪ ﺩﺭ ﺁﯾﻨﺪﻩ ﮐﺎﻣﻼٌ ﺗﻮﺿﻴﺢ ﻣﻴﺪﻡ ﮐﻪ ﭼﺠﻮﺭی ﯾﮏ ﭘﻨﻞ ﻣﺪﯾﺮﯾﺖ ﺩﺭﺳﺖ ﮐﻨﻴﻢ ﻭ ﺍﺯ ﺍﻭﻥ ﻃﺮﯾﻖ ﺍﯾﻨﮑﺎﺭﺍﺭﻭ‬
‫ﺍﻧﺠﺎﻡ ﺑﺪﯾﻢ‪ .‬ﺍﻻﻥ ﻫﻤﻪ ی ﻣﻮﺍﺭﺩ ﺑﻪ ﺻﻮﺭﺕ ﺩﺳﺘﯽ ﺍﻧﺠﺎﻡ ﻣﻴﺸﻪ‪.‬‬

‫ﺩﺭ ﻧﻬﺎﯾﺖ ‪ ،‬ﻣﺘﺪ )(‪ File‬ﭘﺎﺭﺍﻣﺘﺮﻫﺎی ﺟﺎﻟﺒﯽ ﺩﺍﺭﻩ ﮐﻪ ﺑﻬﺶ ﺗﻮﺟﻪ ﮐﻨﻴﺪ‪...‬‬

‫‪ : Filename‬ﻣﺴﻴﺮ ﻓﺎﯾﻞ ﺩﺍﻧﻠﻮﺩ‬

‫‪ : ContentType‬ﻓﺮﻣﺖ ‪ MIME‬ﺑﺮﺍی ﺩﺍﻧﻠﻮﺩ ﻓﺎﯾﻞ‬

‫‪ : Filedownloadname‬ﻧﺎﻣﯽ ﮐﻪ ﺩﺭ ﺁﺩﺭﺱ ﺑﺎﺭ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻣﻴﺸﻪ‬

‫‪ ‬ﻧﺤﻮﻩ ﻱ ﻋﻤﻞ ﻛﺮﺩﻥ ﻛﻨﺘﺮﻝ ﻫﺎ ﻫﻨﮕﺎﻡ ﻓﺮﺍﺧﻮﺍﻧﻲ‬

‫ﺍﻟﮕﻮﺭﯾﺘﻢ ﭘﻴﺶ ﻓﺮﺽ ‪ MVC.Net‬ﺑﺮﺍی ﺍﯾﻦ ﻣﻮﺿﻮﻉ ﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﺍﺳﺖ‪ .‬ﺍﮔﺮ ﺷﻤﺎ ﺩﺭ ﻣﺮﻭﺭﮔﺮ ﺧﻮﺩ ‪ /Product/Detais‬ﺭﺍ ﺗﺎﯾﭗ ﮐﻨﻴﺪ‪،‬‬
‫ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻣﺘﺪ )(‪ Details‬ﮐﻼﺳﯽ ﺍﺯ ‪ ProductController‬ﻫﺴﺖ ﮐﻪ ﻗﺎﺑﻠﻴﺖ ﺍﺟﺮﺍﯾﯽ ﺷﺪﻥ ﺭﺍ ﺩﺍﺭﺩ‪.‬‬

‫ﺩﺭ ﺍﯾﻦ ﺑﺨﺶ ﻣﯽ ﺧﻮﺍﻫﻢ ﺑﻪ ﺷﻤﺎ ﻧﺤﻮﻩ ی ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ AcceptVerbs , ActionName‬ﻭ ‪ ActionMethodSelector‬ﺭﺍ ﺁﻣﻮﺯﺵ‬
‫ﺑﺪﻫﻢ‪ .‬ﯾﮏ ﺗﻮﺿﻴﺢ ﮐﻮﭼﮏ ﺩﺭ ﻣﻮﺭﺩ ﺍﯾﻦ ﺳﻪ ﮔﺰﯾﻨﻪ ‪ :‬ﺍﯾﻨﻬﺎ ﺧﺎﺻﻴﺖ ﻫﺎی ﺍﺧﺘﺼﺎﺻﯽ ﺍﺯ ﯾﮏ ﻋﻤﻠﮕﺮ ﻫﻨﮕﺎﻡ ﻓﺮﺍﺧﻮﺍﻧﯽ ﻫﺴﺘﻨﺪ‪).‬ﺩﺭ‬
‫ﺍﯾﻨﺠﺎ ﻧﻴﺰ ﻣﺎﻧﻨﺪ ﮔﺬﺷﺘﻪ ﻣﻨﻈﻮﺭﻡ ﺍﺯ ﻋﻤﻠﮕﺮ ﻫﻤﺎﻥ ‪ Action‬ﻣﯽ ﺑﺎﺷﺪ (‬

‫‪ ‬ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪AcceptVerbs‬‬

‫ﺍﯾﻦ ﻭﯾﮋﮔﯽ ﯾﺎ ﻫﻤﻮﻥ ‪ Attribute‬ﻣﯽ ﺑﺎﺷﺪ ﺑﺮﺍی ﺟﻠﻮﮔﻴﺮی ﺍﺯ ﯾﮑﺴﺮی ﻋﻤﻠﮕﺮ ﻫﺎ)‪ ( Action‬ﻗﺒﻞ ﺍﺯ ﺍﯾﻨﮑﻪ ﻓﺮﺍﺧﻮﺍﻧﯽ ﺑﺸﻮﻧﺪ‪ .‬ﺍﻟﺒﺘﻪ‬
‫ﺑﻪ ﺟﺰ ﻣﻮﺍﻗﻌﯽ ﮐﻪ ) ﯾﺎ ﻗﺒﻞ ﺍﺯ ﺍﯾﻨﮑﻪ ( ﻋﻤﻠﮕﺮ ‪ HTTP‬ﺷﺮﻭﻉ ﺑﻪ ﻓﻌﺎﻟﻴﺖ ﮐﻨﺪ‪ .‬ﯾﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﻭﯾﮋﮔﯽ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ ﺑﺮﺍی ﻋﻤﻠﻴﺎﺗﯽ ﮐﻪ ﻗﺮﺍﺭ ﺍﺳﺖ ‪ Http Post‬ﺍﻧﺠﺎﻡ ﺩﻫﺪ‪ .‬ﺑﻪ ﺯﺑﺎﻥ ﺳﺎﺩﻩ ﺗﺮ ﺍﯾﻨﻄﻮﺭی ﺑﺮﺍﺗﻮﻥ ﺗﻌﺮﯾﻒ ﮐﻨﻢ ﮐﻪ ‪:‬‬
‫ﯾﮑﺰﻣﺎﻧﯽ ﺷﻤﺎ ﻣﻴﺨﻮﺍﻫﻴﺪ ﮐﺎﺭﺑﺮ ﺗﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺭﻭی ﯾﮏ ﺩﮐﻤﻪ ﮐﻠﻴﮏ ﻧﮑﺮﺩﻩ ﺍﺗﻔﺎﻗﯽ ﺭﺥ ﻧﺪﻫﺪ ﯾﺎ ﺑﺎﻟﻌﮑﺲ‪...‬‬

‫ﻣﻴﺪﻭﻧﻢ ﯾﺨﻮﺭﺩﻩ ﺍﯾﻦ ﺑﺨﺶ ﻭ ﺑﺨﺼﻮﺹ ﺍﯾﻦ ﭼﻨﺪ ﺧﻂ ﺍﺧﻴﺮ ﺳﺨﺖ ﺑﻮﺩ ﻭﻟﯽ ﺩﺭ ﻣﺜﺎﻟﯽ ﮐﻪ ﺩﺭ ﺯﯾﺮ ﻣﻴﺎﻭﺭﻡ ﺷﺎﯾﺪ ﺧﻴﻠﯽ ﺍﺯ ﺷﺒﻬﺎﺕ ﺍﺯ‬
‫ﺑﻴﻦ ﺑﺮﻩ‪...‬‬

‫ﺩﺭ ﻣﺜﺎﻝ ﺯﯾﺮ ﮐﻨﺘﺮﻟﺮ ‪ Employee‬ﺩﻭ ﻋﻤﻠﮕﺮ ﺑﺎ ﻧﺎﻡ )(‪ Create‬ﺭﺍ ﻧﺸﺎﻥ ﻣﯽ ﺩﻫﺪ‪ .‬ﺍﻭﻟﻴﻦ ﻋﻤﻠﮕﺮ ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﺩﺭ ﺻﻔﺤﻪ ‪ HTML‬ﻭ‬
‫ﯾﺎ ﻫﻤﻮﻥ ﺻﻔﺤﻪ ﺍی ﮐﻪ ﮐﺎﺭﺑﺮ ﻣﻴﺒﻴﻨﻪ ﻭ ﮐﺎﺭﺵ ﻫﻢ ﺑﺮﺍی ﺍﯾﺠﺎﺩ ﻭ ﺳﺎﺧﺖ ﯾﮏ ﺍﺳﺘﺨﺪﺍﻣﯽ ﺟﺪﯾﺪﻩ! )ﭼﻴﺰی ﮐﻪ ﺗﻮ ﺍﯾﺮﺍﻥ ﺯﯾﺎﺩﻩ ‪:‬ﺩی(‬

‫ﻭ ﺩﻭﻣﯽ ﻫﻢ ﺑﺮﺍی ﻗﺮﺍﺭﺩﺍﻥ ﻭ ﯾﺎ ﻫﻤﻮﻥ ﺫﺧﻴﺮﻩ ﮐﺮﺩﻥ ﺍﯾﻦ ﺍﺳﺘﺨﺪﺍﻣﯽ ﺩﺭ ﺩﯾﺘﺎﺑﻴﺲ ﻫﺴﺖ‪.‬‬

‫ﻫﺮﺩﻭ ﻣﺘﺪ )(‪ Create‬ﺑﺮﺍی ﻧﺸﺎﻥ ﺩﺍﺩﻥ ﻭﯾﮋﮔﯽ ‪ AcceptVerbs‬ﺑﻪ ﮐﺎﺭ ﻣﯽ ﺭﻭﻧﺪ‪ .‬ﺍﻭﻟﻴﻦ ﻣﺘﺪ )(‪ Create‬ﺗﻮﺍﻧﺎﯾﯽ ﺍﻧﺠﺎﻡ ﻓﻘﻂ ﺑﺮ‬
‫ﺍﺳﺎﺱ ﻋﻤﻠﻴﺎﺕ ‪ Http Get‬ﺭﺍ ﺩﺍﺭﺍﺳﺖ ﻭ ﺩﻭﻣﯽ ﺗﻨﻬﺎ ﺑﺮﺍی ﻋﻤﻠﻴﺎﺕ ‪.Http Post‬‬

‫ﺩﺭ ﺩﺭﺱ ﻫﺎی ﮔﺬﺷﺘﻪ ﻧﺤﻮﻩ ی ﺳﺎﺧﺖ ﮐﻼﺱ ﺭﻭ ﺗﻮﺿﻴﺞ ﺩﺍﺩﻡ‪ .‬ﯾﮏ ﮐﻼﺱ ﺩﺭﺳﺖ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﮐﺪﻫﺎی ﺯﯾﺮ ﺭﺍ ﺩﺭ ﺁﻥ ﻗﺮﺍﺭ ﻣﯽ‬
‫ﺩﻫﻴﻢ‪:‬‬

‫;‪using System.Web.Mvc‬‬
‫;‪using ToyStore.Models‬‬
‫‪namespace ToyStore.Controllers‬‬
‫{‬
‫‪public class EmployeeController : Controller‬‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 46

{
private EmployeeController _repository = new EmployeeController();

//
// GET: /Employee/

public ActionResult Index()


{
return View();
}

// GET: /Employee/Create
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
return View();
}

//
// Post: /Employee/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(EmployeeController employeeToCreate)
{
try
{
_repository.InsertEmployee(employeeToCreate);
return RedirectToAction("Index");
}
catch
{
return View();
}
}

// Delete : /Employee/Delete/1
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult Delete(int id)
{
_repository.DeleteEmployee(id);
return Json(true);
}

}
}
‫ ﻣﺎﻧﻨﺪ ﺯﯾﺮ‬.‫ ﺑﺎﺷﺪ‬Controller/EmployeeController.css ‫ﯾﻌﻨﯽ ﺁﺩﺭﺱ ﻓﺎﯾﻞ ﺑﺎﻻ ﺑﺎﯾﺪ‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 47

:‫ ﻫﻢ ﺑﺎﯾﺪ ﺩﺭﺳﺖ ﮐﻨﻴﻢ‬Models ‫ﻣﻬﻤﺘﺮ ﺍﺯ ﻫﻤﻪ ﺍﯾﻨﮑﻪ ﺩﻭ‬

: ‫ ﻭ ﻣﺤﺘﻮﯾﺎﺕ‬Employee.cs ‫ﺍﻭﻟﯽ ﺑﺎ ﻧﺎﻡ‬

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ToyStore.Models
{
public class Employee
{
}
}

: ‫ ﻭ ﻣﺤﺘﻮﯾﺎﺕ‬EmployeeRepository.cs ‫ﻭ ﺩﻭﻣﯽ ﺑﺎ ﻧﺎﻡ‬

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ToyStore.Models
{
public class EmployeeRepository
{

public void InsertEmployee(Employee employeeToCreate)


{ }

public void DeleteEmployee(int id)


{ }

}
}

.‫ ﻫﻢ ﻣﯽ ﺳﺎﺯﯾﻢ ﻭ ﮐﺪﻫﺎی ﺯﯾﺮ ﺭﺍ ﺩﺭ ﺁﻥ ﻣﯽ ﻧﻮﯾﺴﻴﻢ‬View ‫ﻭ ﻫﻤﭽﻨﻴﻦ ﯾﮏ‬

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"


Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Ajax.ActionLink
(
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪48‬‬

‫‪"Delete",‬‬ ‫‪// link text‬‬


‫‪"Delete",‬‬ ‫‪// action name‬‬
‫‪new {id=39}, // route values‬‬
‫}"?‪new AjaxOptions {HttpMethod="DELETE", Confirm="Delete Employee‬‬
‫>‪) %‬‬

‫>‪</asp:Content‬‬

‫ﺍﻟﺒﺘﻪ ﺍﯾﻦ ﻭﯾﻮ ﺭﺍ ﺍﺯ ﮔﺰﯾﻨﻪ ی ‪ Delete‬ﺳﺎﺧﺘﻢ‪ .‬ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ‪ Index‬ﻭ ﯾﺎ ﺣﺘﯽ ﺍﺯ ‪ Create‬ﺑﺴﺎﺯﯾﺪ‪ .‬ﻭﻫﻤﻴﻨﻄﻮﺭ ﯾﺨﻮﺭﺩﻩ‬
‫ﺁﺟﺎﮐﺲ ﮐﺎﺭ ﮐﺮﺩﻡ‪..‬‬

‫ﯾﮏ ﺗﻮﺿﻴﺢ ﻫﻢ ﺩﺭ ﻣﻮﺭﺩ ﺗﻔﺎﻭﺕ ‪ Post‬ﻭ ‪ get‬ﺑﺪﻫﻢ‪ .‬ﺧﻴﻠﯽ ﺍﺯ ﻣﺮﺩﻡ ) ﻣﻨﻈﻮﺭﻡ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﺎﻥ ﻋﺰﯾﺰﻩ( ﻓﮑﺮ ﻣﯽ ﮐﻨﻦ ﺍﯾﻦ ﺩﻭ ﻫﻴﭻ‬
‫ﺗﻔﺎﻭﺗﯽ ﻧﻤﯽ ﮐﻨﻦ ﻭﻟﯽ‪ ...‬ﺷﻤﺎ ﻭﻗﺘﯽ ﺍﺯ ‪ Get‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﺪ ﮐﻪ ﺩﺭ ﻓﺮﻣﺘﻮﻥ ﻓﻴﻠﺪﻫﺎﯾﯽ ﻣﺎﻧﻨﺪ ﺁﺩﺭﺱ ﻭ ﻧﺎﻡ ﻭ ﻧﺎﻡ ﺧﺎﻧﻮﺍﺩﮔﯽ ﻭ‬
‫‪ ..‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻭ ﺑﻪ ﺍﺻﻄﻼﺡ ﺍﺭﺯﺵ ﺍﻃﻼﻋﺎﺗﯽ ﺯﯾﺎﺩی ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ‪ .‬ﻭﻟﯽ ﺯﻣﺎﻧﯽ ﮐﻪ ﻧﺎﻡ ﮐﺎﺭﺑﺮی ﻭ ﺭﻣﺰ ﻋﺒﻮﺭ ﺭﺍ ﮐﺎﺭﺑﺮ ﺑﺎﯾﺪ ﺍﺭﺩ‬
‫ﮐﻨﺪ ﺩﯾﮕﺮ ﻗﻀﻴﻪ ﻓﺮﻕ ﻣﯽ ﮐﻨﺪ ﻭ ﺑﻬﺘﺮ ﺍﺳﺖ ﺑﺮﺍی ﺍﻣﻨﻴﺖ ﺍﺯ ﻣﺘﺪ ‪ Post‬ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ‪ .‬ﺧﻮﺏ ﺑﺮﺍی ﺍﯾﻨﮑﻪ ﺭﺍﺣﺖ ﺗﺮ ﮐﻨﻢ ﺑﺤﺚ ﺭﻭ‬
‫ﺍﯾﻨﻄﻮﺭی ﺑﮕﻢ ﮐﻪ ﻭﻗﺘﯽ ﺍﺯ ﻣﺘﺪ ‪ Get‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﺪ ﺗﻤﺎﻣﯽ ﺍﻃﻼﻋﺎﺕ ﻭﺍﺭﺩ ﺷﺪﻩ ﺩﺭ ﻓﻴﻠﺪﻫﺎ ﺩﺭ ﺍﺩﺭﺱ ﺑﺎﺭ ﺑﻪ ﺻﻮﺭﺕ ﮐﺎﻣﻼً‬
‫ﻭﺍﺿﺢ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﻣﻴﺸﻪ ﻭﻟﯽ ﻭﻗﺘﯽ ﺍﺯ ﻣﺘﺪ ‪ Post‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﺪ ﺍﯾﻦ ﻗﻀﻴﻪ ﮐﺎﻣﻼً ﻓﺮﻕ ﺩﺍﺭﻩ ﻭ ﺩﺭ ﺧﻴﻠﯽ ﺍﺯ ﻣﻮﺍﻗﻊ ﻣﻮﺍﺭﺩ ﻭﺍﺭﺩ‬
‫ﺷﺪﻩ ﺩﺭ ﻓﻴﻠﺪﻫﺎ ‪ Encrypt‬ﯾﺎ ﺭﻣﺰﮔﺬﺍﺭی ﻣﯽ ﺷﻮﻧﺪ‪.‬‬

‫ﺧﺐ ﺗﺎ ﺍﯾﻨﺠﺎی ﮐﺎﺭ ﺑﺎﯾﺪ ﻣﺎﻧﻨﺪ ﺷﮑﻞ ﺯﯾﺮ ﺷﺪﻩ ﺑﺎﺷﻪ‪:‬‬

‫ﻫﻤﻮﻧﻄﻮﺭ ﮐﻪ ﻣﻴﺒﻴﻨﻴﺪ ﺑﻨﺪﻩ ﺍﺯ ﻣﺘﺪ ﭘﺴﺖ ﺍﺳﺘﻔﺎﺩﻩ ﮐﺮﺩﻡ ﻭ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺻﻮﺭﺕ ﭼﻨﺪ ﻋﺪﺩ ﻭ ﺣﺮﻑ ﻧﺎ ﻣﻌﻠﻮﻡ ﺑﺮﺍی ﺳﺮﻭﺭ ﺩﺭ ﺣﺎﻝ‬
‫ﺍﺭﺳﺎﻝ ﻫﺴﺖ‪.‬‬

‫‪ ‬ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ActionName‬‬

‫ﺯﻣﺎﻧﯽ ﺷﻤﺎ ﺍﺯ ﺍﯾﻦ ﻭﯾﮋﮔﯽ ﺍﺳﺘﻔﺎﺩﻩ ﻣﯽ ﮐﻨﻴﺪ ﮐﻪ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﻧﺎﻡ ﻣﺘﺪ ﻫﻢ ﻧﻤﺎﯾﺶ ﺩﺍﺩﻩ ﺷﻮﺩ‪ .‬ﺩﺭ ﺍﯾﻨﺠﺎ ﺷﻤﺎ ﺩﻭ ﺭﺍﻩ ﺑﺮﺍی‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺑﻬﻴﻨﻪ ﺍﺯ ﺍﯾﻦ ﻭﯾﮋﮔﯽ ﺩﺍﺭﯾﺪ‪:‬‬

‫ﺍﻭﻟﻴﺶ ﺯﻣﺎﻧﻴﻪ ﮐﻪ ﻣﺘﺪ ﺷﻤﺎ ‪ Overloaded‬ﻣﻴﮑﻨﻪ )ﻣﺎ ﺑﻬﺶ ﻣﻴﮕﻴﻢ ﺳﺮﺑﺎﺭ – ﺷﺮﻣﻨﺪﻩ ﺑﺮﺍی ﺑﻌﻀﯽ ﺍﺯ ﮐﻠﻤﺎﺕ ﻣﻌﺎﺩﻝ ﭘﻴﺪﺍ ﻧﻤﻴﺸﻪ(‬
‫‪FaEdu.ir‬ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬ ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ ‪MVC.Net‬‬ ‫‪49‬‬

‫ﺩﺭ ﺣﻘﻴﻘﺖ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﻭﯾﮋﮔﯽ ‪ ActionName‬ﺑﺮﺍی ﺗﺸﺨﻴﺺ ﺩﺍﺩﻥ ) ﯾﺎ ﻭﺟﻪ ﺗﻤﺎﯾﺰ ﻗﺎﯾﻞ ﺷﺪﻥ ( ﺍﯾﻦ ﺩﻭ ﻣﺘﺪ ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﻧﻤﺎﯾﻴﺪ‪ .‬ﺑﺎﺯ ﻫﻢ ﺳﺎﺩﻩ ﺗﺮﺵ ﺍﯾﻦ ﻣﻴﺸﻪ ﮐﻪ ﺑﺮﺍی ﻣﻌﻠﻮﻡ ﺷﺪﻥ ﺩﻭ ﻣﺘﺪی ﮐﻪ ﻫﻢ ﻧﺎﻡ ﻫﺴﺘﻨﺪ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺍﯾﻦ ﺧﺎﺻﻴﺖ ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﮐﻨﻴﺪ‪.‬‬

‫ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻓﺮﺽ ﮐﻨﻴﺪ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﯾﮏ ﮐﻨﺘﺮﻟﺮ ‪ Product‬ﺍﯾﺠﺎﺩ ﮐﻨﻴﺪ ﺑﺎ ﺩﻭ ﻣﺘﺪ )(‪ . Create‬ﮐﻪ ﺍﻭﻟﻴﻦ ﻣﺘﺪ ﺑﺮ ﻓﺮﺽ ﺑﺮﺍی‬
‫ﻗﺒﻮﻝ ﮐﺮﺩﻥ ‪ id‬ﻭ ﺩﻭﻣﯽ ﯾﮏ ﭼﻴﺰ ﺩﯾﮕﺮ‪ .‬ﺩﺭ ﺍﯾﻨﺠﺎ ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺧﺎﺻﻴﺖ ‪ ActionName‬ﺑﺮﺍی ﺗﻤﺎﯾﺰ ﺑﺨﺸﻴﺪﻥ ﺍﯾﻦ ﺩﻭ ﻣﺘﺪ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ‪.‬‬

‫ﺩﻭﻣﻴﻦ ﺣﺎﻟﺖ ﻫﻢ ﺯﻣﺎﻧﻴﻪ ﮐﻪ ﺷﻤﺎ ﻣﯽ ﺧﻮﺍﻫﻴﺪ ﺍﺯ ﺧﺎﺻﻴﺖ ‪ ActionName‬ﺑﺮﺍی ﺑﻬﺒﻮﺩ ﺑﺨﺸﻴﺪﻥ ﻣﺘﺪﻫﺎی ﺧﻮﺩ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻴﺪ‪ .‬ﺑﻪ‬
‫ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺩﺭ ﮐﺪﻫﺎی ﺯﯾﺮ ﺩﻭ ﻋﻤﻠﻴﺎﺕ ﺑﺎ ﯾﮏ ﻋﻨﻮﺍﻥ )(‪ Edit‬ﮐﻪ ﻫﺮﮐﺪﻭﻡ ﯾﮑﺴﺮی ﺍﻋﻤﺎﻝ ﺭﻭ ﺍﻧﺠﺎﻡ ﻣﯽ ﺩﻫﻨﺪ ﻭ ﯾﮑﺴﺮی ﭘﺎﺭﺍﻣﺘﺮ‬
‫ﺭﻭ ﻧﻴﺰ ﻗﺒﻮﻝ ﻣﯽ ﮐﻨﻨﺪ‪:‬‬

‫ﯾﮏ ﮐﻨﺘﺮﻟﺮ ﺑﺎ ﻧﺎﻡ ‪ MerchandiseController‬ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﻴﻢ ﻭ ﮐﺪﻫﺎی ﺯﯾﺮ ﺭﺍ ﺩﺭ ﺁﻥ ﻗﺮﺍﺭ ﻣﯽ ﺩﻫﻴﻢ‪:‬‬

‫;‪using System.Web.Mvc‬‬
‫;‪using ToyStore.Models‬‬

‫‪namespace ToyStore.Controllers‬‬
‫{‬
‫‪public class MerchandiseController : Controller‬‬
‫{‬
‫;)(‪private MerchandiseRepository _repository = new MerchandiseRepository‬‬

‫‪// GET: /Merchandise/Edit‬‬


‫])"‪[ActionName("Edit‬‬
‫])‪[AcceptVerbs(HttpVerbs.Get‬‬
‫)‪public ActionResult Edit_GET(Merchandise merchandiseToEdit‬‬
‫{‬
‫;)‪return View(merchandiseToEdit‬‬
‫}‬

‫‪// POST: /Merchandise/Edit‬‬


‫])"‪[ActionName("Edit‬‬
‫])‪[AcceptVerbs(HttpVerbs.Post‬‬
‫)‪public ActionResult Edit_POST(Merchandise merchandiseToEdit‬‬
‫{‬
‫‪try‬‬
‫{‬
‫;)‪_repository.Edit(merchandiseToEdit‬‬
‫;)"‪return RedirectToAction("Edit‬‬
‫}‬
‫‪catch‬‬
‫{‬
‫;)(‪return View‬‬
‫}‬
‫}‬

‫}‬
‫}‬

‫ﻫﻤﭽﻨﻴﻦ ﺩﻭ ‪ Models‬ﻫﻢ ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﻴﻢ‬


‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 50

:‫ ﻭ ﻣﺤﺘﻮﯾﺎﺕ‬Merchandise.cs ‫ﺍﻭﻟﯽ ﺑﺎ ﻧﺎﻡ‬

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ToyStore.Models
{
public class Merchandise
{
}
}

:‫ﺩﻭﻣﯽ ﺑﺎ ﻧﺎﻡ ﻭ ﻣﺤﺘﻮﯾﺎﺕ‬

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ToyStore.Models
{
public class MerchandiseRepository
{

public void Edit(Merchandise merchandiseToEdit)


{ }
}
}

: Edit ‫ﻭ ﯾﮏ ﻭﯾﻮ ﻫﻢ ﺑﺮﺍی ﯾﮑﯽ ﺍﺯ ﺩﻭ‬

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"


Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">


Edit
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Edit</h2>

<form method="post" action="/Merchandise/Edit">


<input type="submit" value="Submit" />
</form>

</asp:Content>

‫ ﻭ‬get ‫ﺍﻭﻟﯽ ﺑﺎ ﻣﺘﺪ‬.‫ ﺍﻭﻥ ﺩﻭ ﺭﻭ ﺍﺯ ﻫﻢ ﺟﺪﺍ ﮐﺮﺩﯾﻢ‬ActionName ‫ ﺩﺍﺭﯾﻢ ﻭﻟﯽ ﯾﺎ‬Edit() ‫ﻫﻤﻮﻧﻄﻮﺭ ﮐﻪ ﺩﯾﺪﯾﺪ ﺩﺭ ﺍﯾﻦ ﻣﺜﺎﻝ ﻣﺎ ﺩﻭ ﻣﺘﺪ‬
.Post ‫ﺩﻭﻣﯽ ﺑﺎ ﻣﺘﺪ‬
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 51

ActionMethodSelector ‫ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ‬

‫ ﺷﻤﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﮐﻼﺱ ﻫﺎی ﺍﯾﻦ‬.‫ﺷﻤﺎ ﻣﯽ ﺗﻮﺍﻧﻴﺪ ﻫﺮﻧﻮﻉ ﻭﯾﮋﮔﯽ ﮐﻪ ﺩﻭﺳﺖ ﺩﺍﺭﯾﺪ ﻣﻄﺎﺑﻖ ﺑﺎ ﻋﻤﻠﻴﺎﺕ ﻋﻤﻠﮕﺮ ﺑﺴﺎﺯﯾﺪ‬
.‫ ﺍﯾﻦ ﮐﺎﺭ ﺭﺍ ﺍﻧﺠﺎﻡ ﺑﺪﻫﻴﺪ‬Attribute ‫ﺧﺎﺻﻴﺖ ﯾﺎ ﻫﻤﻮﻥ‬

.‫ﺍﯾﻦ ﯾﮏ ﮐﻼﺱ ﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﺍﺳﺖ‬

‫ ﺷﻤﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﯾﻦ‬.‫ ﺍﺳﺖ‬IsValidForRequest() ‫ﺍﯾﻦ ﻓﻘﻂ ﯾﮏ ﻣﺘﺪ ﺍﺳﺖ ﮐﻪ ﺷﻤﺎ ﺑﺎﯾﺪ ﺍﺯ ﺁﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﯾﻴﺪ ﻭ ﺍﺳﻢ ﺁﻥ‬
.‫ﻣﺘﺪ ﺷﺮﺍﯾﻂ ﺭﺍ ﺑﺮﺍی ﮐﺎﺭ ﺧﻮﺩﺗﺎﻥ ﺧﻴﻠﯽ ﺭﺍﺣﺖ ﻣﯽ ﮐﻨﻴﺪ‬

:‫ﻣﺴﺘﻘﻴﻢ ﻣﻴﺮﯾﻢ ﺳﺮﺍﻍ ﻣﺜﺎﻝ‬

‫ ﭼﻮﻥ ﻣﻴﺨﻮﺍﻡ ﺍﺯ‬.‫ ﺍﯾﺠﺎﺩ ﮐﻨﻴﺪ‬AjaxMethodAttribute ‫ ﺑﺴﺎﺯﯾﺪ ﻭ ﯾﮏ ﻓﺎﯾﻞ ﮐﻼﺱ ﺑﺎ ﻧﺎﻡ‬Selectors ‫ﻓﻘﻂ ﻗﺒﻠﺶ ﯾﮏ ﻓﻮﻟﺪﺭ ﺑﺎ ﻧﺎﻡ‬
: ‫ ﻣﺤﺘﻮﯾﺎﺕ ﺍﯾﻦ ﻓﺎﯾﻞ‬.‫ ﺍﯾﻦ ﻣﺴﺌﻠﻪ ﺭﻭ ﺩﺭ ﺁﯾﻨﺪﻩ ﺩﺭﺱ ﻣﻴﺪﻡ‬.‫ﺁﺟﺎﮐﺲ ﺍﺳﺘﻔﺎﺩﻩ ﮐﻨﻢ‬

using System.Reflection;
using System.Web.Mvc;

namespace ToyStore.Selector
{
public class AjaxMethod : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo
methodInfo)
{
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
}
‫ ﺍﯾﺠﺎﺩ ﻣﯽ ﮐﻨﻴﻢ‬NewsController.cs ‫ﻃﺒﻖ ﻣﻌﻤﻮﻝ ﯾﮏ ﮐﻼﺱ ﺑﺎ ﻧﺎﻡ‬

‫ ﺍﻟﺒﺘﻪ ﺗﺤﺖ ﻫﻤﺎﻥ ﺷﺮﺍﯾﻄﯽ ﮐﻪ ﻣﺎ ﺗﻌﻴﻴﻦ ﻣﯽ‬.‫ ﺭﺍ ﺑﺮﺍی ﻣﺎ ﺑﺮ ﻣﯽ ﮔﺮﺩﺍﻧﺪ‬IsAjaxRequest() ‫ﺍﯾﻦ ﺍﻧﺘﺨﺎﺏ ﺧﻴﻠﯽ ﺳﺎﺩﻩ ﻣﻘﺎﺩﯾﺮی ﺍﺯ‬
.‫ﮐﻨﻴﻢ‬

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ToyStore.Selector;

namespace ToyStore.Controllers
{
public class NewsController : Controller
{
private readonly List<string> _news = new List<string>();
private Random _rnd = new Random();

public NewsController()
{
_news.Add("Moon explodes!");
_news.Add("Stock market up 200 percent!");
_news.Add("Talking robot created!");
}
‫ﮔﺮﻭﻩ ﺁﻣﻮﺯﺵ ﻓﺎﺭﺳﻲ‬FaEdu.ir MVC.Net ‫ﺁﻣﻮﺯﺵ ﺑﻪ ﻫﻤﺮﺍﻩ ﭘﺮﻭژﻩ‬ 52

public ActionResult Index()


{
var selectedIndex = _rnd.Next(_news.Count);
ViewData.Model = _news[selectedIndex];
return View();
}

[AjaxMethod]
[ActionName("Index")]
public string Index_AJAX()
{
var selectedIndex = _rnd.Next(_news.Count);
return _news[selectedIndex];
}

}
}

:‫ ﯾﮏ ﻭﯾﻮ ﻣﻴﺴﺎﺯﯾﻢ ﻭ ﮐﺪﻫﺎی ﺯﯾﺮ ﺭﺍ ﺩﺭ ﺍﻥ ﻗﺮﺍﺭ ﻣﯽ ﺩﻫﻴﻢ‬Index() ‫ﻭ ﻫﻤﭽﻨﻴﻦ ﺍﺯ ﺗﺎﺑﻊ‬

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"


Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">


Index
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>


<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>

<%=Ajax.ActionLink("Get News", "Index", new AjaxOptions {UpdateTargetId = "news"})%>

<span id="news"></span>

</asp:Content>

....‫ﺑﻪ ﻫﻤﻴﻦ ﺭﺍﺣﺘﯽ‬

.‫ ﻭﻟﯽ ﺩﺭ ﺁﯾﻨﺪﻩ ﭼﻨﺪ ﻣﻮﺭﺩ ﺭﻭ ﺑﻪ ﺍﯾﻦ ﺑﺨﺶ ﺍﺿﺎﻓﻪ ﻣﯽ ﮐﻨﻢ‬.‫ﺍﯾﻦ ﺑﺨﺶ ﺗﻤﻮﻡ ﺷﺪ‬

Вам также может понравиться